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 相关文章推荐
在次封装easyui-Dialog插件实现代码
Nov 14 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
Nov 24 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
Jan 24 Javascript
javascript中的self和this用法小结
Feb 08 Javascript
浅析Javascript匿名函数与自执行函数
Feb 06 Javascript
jQuery Chart图表制作组件Highcharts用法详解
Jun 01 Javascript
微信小程序 购物车简单实例
Oct 24 Javascript
jQuery插件ajaxFileUpload使用详解
Jan 10 Javascript
微信小程序开发之入门实例教程篇
Mar 07 Javascript
微信小程序动态的加载数据实例代码
Apr 14 Javascript
vue2.0之多页面的开发的示例
Jan 30 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
Aug 22 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
node.js中的events.emitter.listeners方法使用说明
2014/12/10 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
js实现简单点赞操作
2020/03/17 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
python async with和async for的使用
2019/06/20 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
捷克玩具商店:Bambule
2019/02/23 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
中国包裹转运寄送国际服务:Famiboat
2019/07/24 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
珍爱生命演讲稿
2014/05/10 职场文书
学校四风对照检查材料
2014/08/28 职场文书
单身申明具结书
2015/02/26 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers