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 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
JSON JQUERY模板实现说明
Jul 03 Javascript
jQuery的animate函数学习记录
Aug 08 Javascript
在JS数组特定索引处指定位置插入元素的技巧
Aug 24 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
Jan 13 Javascript
动态加载js文件简单示例
Apr 21 Javascript
将List对象列表转换成JSON格式的类实现方法
Jul 04 Javascript
jQuery过滤选择器经典应用
Aug 18 Javascript
获取JavaScript异步函数的返回值
Dec 21 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
Apr 13 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
Node.js+Express+Mysql 实现增删改查
Apr 03 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
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
2013/10/21 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
2016/12/13 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
python进阶教程之词典、字典、dict
2014/08/29 Python
Python可变参数用法实例分析
2017/04/02 Python
Python数据操作方法封装类实例
2017/06/23 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
python list格式数据excel导出方法
2018/10/31 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
先进学校事迹材料
2014/12/30 职场文书
旷工检讨书1000字
2015/01/01 职场文书
就业推荐表院系意见
2015/06/05 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS