react中fetch之cors跨域请求的实现方法


Posted in Javascript onMarch 14, 2018

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

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

具体参考:https://github.com/facebookincubator/create-react-app

后端部分我使用了phalcon。

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

因此我配置了两个域名:

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

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

于是乎出现跨域问题。

cors详细的介绍请看:https://3water.com/article/102694.htm

以下是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);
  }

  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);
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery的实现原理的模拟代码 -4 重要的扩展函数 extend
Aug 03 Javascript
JavaScript 原型继承
Dec 26 Javascript
纯JS实现根据CSS的class选择DOM
Mar 22 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
Nov 26 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
Aug 18 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
Oct 29 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
Mar 23 jQuery
JS实现二叉查找树的建立以及一些遍历方法实现
Apr 17 Javascript
Vue如何引入远程JS文件
Apr 20 Javascript
JS实现无限轮播无倒退效果
Sep 21 Javascript
原生js实现俄罗斯方块
Oct 20 Javascript
vue实现树状表格效果
Dec 29 Vue.js
解决vue项目报错webpackJsonp is not defined问题
Mar 14 #Javascript
create-react-app构建项目慢的解决方法
Mar 14 #Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
Mar 14 #Javascript
react以create-react-app为基础创建项目
Mar 14 #Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 #Javascript
vue使用iframe嵌入网页的示例代码
Jun 09 #Javascript
JavaScript实现区块链
Mar 14 #Javascript
You might like
建立动态的WML站点(一)
2006/10/09 PHP
简单的页面缓冲技术
2006/10/09 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
基于AngularJS+HTML+Groovy实现登录功能
2016/02/17 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
js利用iframe实现选项卡效果
2020/08/09 Javascript
React实现轮播效果
2020/08/25 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
python套接字流重定向实例汇总
2016/03/03 Python
用Python编写简单的微博爬虫
2016/03/04 Python
python梯度下降法的简单示例
2018/08/31 Python
最新2019Pycharm安装教程 亲测
2020/02/28 Python
django model object序列化实例
2020/03/13 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
专升本自我鉴定
2013/10/10 职场文书
网络工程师职业规划
2014/02/10 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript