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的实现简单的分页控件
Oct 10 Javascript
『jQuery』取指定url格式及分割函数应用
Apr 22 Javascript
ie8本地图片上传预览示例代码
Jan 12 Javascript
js function定义函数的几种不错方法
Feb 27 Javascript
jquery.validate.js插件使用经验记录
Jul 02 Javascript
浅谈JS中json数据的处理
Jun 30 Javascript
AnjularJS中$scope和$rootScope的区别小结
Sep 18 Javascript
实现easyui的datagrid导出为excel的示例代码
Nov 10 Javascript
node.js文件上传重命名以及移动位置的示例代码
Jan 19 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
Oct 31 Javascript
JavaScript实现简单计算器
Mar 19 Javascript
解决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
php下intval()和(int)转换使用与区别
2008/07/18 PHP
php 中的4种标记风格介绍
2012/05/10 PHP
PHP编程函数安全篇
2013/01/08 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
jquery中插件实现自动添加用户的具体代码
2013/11/15 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[04:41]2014DOTA2国际邀请赛 Liquid顺利突围晋级正赛
2014/07/09 DOTA
在Python的gevent框架下执行异步的Solr查询的教程
2015/04/16 Python
简单介绍Python中的try和finally和with方法
2015/05/05 Python
Python matplotlib可视化实例解析
2020/06/01 Python
Python如何定义有可选参数的元类
2020/07/31 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
使用canvas压缩图片上传的方法示例
2020/02/07 HTML / CSS
面向对象概念面试题(.NET)
2016/11/04 面试题
new修饰符是起什么作用
2015/06/28 面试题
爬山的活动方案
2014/08/16 职场文书
金融保险专业求职信
2014/09/03 职场文书
小王子读书笔记
2015/06/29 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript