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 相关文章推荐
效率高的Javscript字符串替换函数的benchmark
Aug 02 Javascript
js利用div背景,做一个竖线的效果。
Nov 22 Javascript
IE6下focus与blur错乱的解决方案
Jul 31 Javascript
JS匀速运动演示示例代码
Nov 26 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
jquery简单实现图片切换效果的方法
May 12 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
Dec 10 Javascript
微信小程序的分类页面制作
Jun 27 Javascript
vue如何根据网站路由判断页面主题色详解
Nov 02 Javascript
jquery实现的分页显示功能示例
Aug 23 jQuery
Vue中fragment.js使用方法小结
Feb 17 Javascript
VUE中的v-if与v-show区别介绍
Mar 13 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
功能强大的PHP POST提交数据类
2016/07/15 PHP
php微信开发之图片回复功能
2018/06/14 PHP
js传值 判断
2006/10/26 Javascript
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
python中ConfigParse模块的用法
2014/09/29 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
英国马匹装备和马术用品购物网站:Equine Superstore
2019/03/03 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
文言文形式的学生求职信
2013/12/03 职场文书
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
房地产项目策划书
2014/02/05 职场文书
关于诚信的活动方案
2014/08/18 职场文书
学习张林森心得体会
2014/09/10 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
关爱留守儿童主题班会
2015/08/13 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
Apache Hudi数据布局黑科技降低一半查询时间
2022/03/31 Servers
全新239军机修复记
2022/04/05 无线电
MySQL如何使备份得数据保持一致
2022/05/02 MySQL
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS