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 相关文章推荐
ExtJS 2.0实用简明教程 之获得ExtJS
Apr 29 Javascript
JavaScript中的typeof操作符用法实例
Apr 05 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
May 11 Javascript
jquery图片倾斜层叠切换特效代码分享
Aug 27 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
第一个Vue插件从封装到发布
Nov 22 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
Aug 31 Javascript
vue router 组件的高级应用实例代码
Apr 08 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
Mar 02 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 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
多文件上载系统完整版
2006/10/09 PHP
用函数读出数据表内容放入二维数组
2006/10/09 PHP
php xml文件操作实现代码(二)
2009/03/20 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
javascript 操作select下拉列表框的一点小经验
2010/03/20 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
JSON辅助格式化处理方法
2013/03/26 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
javascript生成不重复的随机数
2015/07/17 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
微信小程序 wxapp画布 canvas详细介绍
2016/10/31 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
django fernet fields字段加密实践详解
2019/08/12 Python
Python如何给你的程序做性能测试
2020/07/29 Python
python如何随机生成高强度密码
2020/08/19 Python
python matplotlib库的基本使用
2020/09/23 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
HTML5实现预览本地图片
2016/02/17 HTML / CSS
运动会领导邀请函
2014/01/10 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
建筑安全责任书范本
2014/07/24 职场文书
机动车登记业务委托书
2014/10/08 职场文书
继承公证书格式
2015/01/26 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书