React中Fetch之cors跨域请求的使用

发布时间:2019-06-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了React中Fetch之cors跨域请求的使用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

本篇文章主要介绍了react中fetch之cors跨域请求的实现方法,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。

项目中使用了react,当中需要使用fetch来代替ajax。

由于react的create_react_app工具很方便,基本上开箱即用,经过创建项目,输入npm start命令后,便自动监听一个3000的端口,到此前端部分就绪。 

后端部分我使用了phalcon。 

由于前后端分离,为了方便,我尝试在nginx中使之同域(前端和后台api的顶级域名相同),但phalcon框架是单入口、react监听3000时候,通过nginx反向代理,出现js找不到的问题,于是放弃同域的打算。

因此我配置了两个域名: 

1、www.xxx.COM 
2、data.xxx.com

第一个域名用于react部分,端口号是3000(调试用,正式上线是80) 
第二个域名用于api,端口号是80

于是乎出现跨域问题。

以下是php部分的允许跨域域名访问的设置

$origin    = isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:'';
$allowOrigin = [
          'http://www.xxx.com',
          'http://xxx.com'
        ];
if (in_array($origin, $allowOrigin)) {
  header('Access-Control-Allow-Origin: ' . $origin);
}//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860
 
header('Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Content-tyPE, Accept');

以下是fetch部分的ajax请求

let postData = {a:'b'};
fetch('http://data.xxx.com/Admin/LOGin/login', {
  method: 'POST',
  mode: 'cors',
  credentials: 'include',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: JSON.stringify(postData)
}).then(function(response) {
  console.log(response);
});//欢迎加入前端全栈开发交流圈一起吹水聊天学习交流:864305860

结语

感谢您的观看,如有不足之处,欢迎批评指正。

脚本宝典总结

以上是脚本宝典为你收集整理的React中Fetch之cors跨域请求的使用全部内容,希望文章能够帮你解决React中Fetch之cors跨域请求的使用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。