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

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

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

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

后端部分我使用了phalcon。前端

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

所以我配置了两个域名:node

一、www.xxx.com  二、data.xxx.comreact

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

因而乎出现跨域问题。nginx

如下是php部分的容许跨域域名访问的设置web

$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,快速升职加薪,走上人生巅峰。

相关文章
相关标签/搜索