美文网首页React Native开发让前端飞RN
React中Fetch之cors跨域请求的使用

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

作者: a333661d6d6e | 来源:发表于2018-12-20 19:51 被阅读21次

    本篇文章主要介绍了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
    

    结语

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

    本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
    对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
    最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

    相关文章

      网友评论

        本文标题:React中Fetch之cors跨域请求的使用

        本文链接:https://www.haomeiwen.com/subject/mrdskqtx.html