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实现表格数据的动态添加与统计的代码
Jan 31 Javascript
js实现表格字段排序
Feb 19 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
关于验证码在IE中不刷新的快速解决方法
Sep 23 Javascript
JS简单获取当前年月日星期的方法示例
Feb 07 Javascript
简单谈谈原生js的math对象
Jun 27 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
Sep 18 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
Sep 22 Javascript
JavaScript门面模式详解
Oct 19 Javascript
vue.js 使用axios实现下载功能的示例
Mar 05 Javascript
在Vue项目中引入JQuery-ui插件的讲解
Jan 27 jQuery
关于element的表单组件整理笔记
Feb 05 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
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
jquery 学习笔记一
2010/04/07 Javascript
Js sort排序使用方法
2011/10/17 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
浅谈javascript中的闭包
2015/05/13 Javascript
Javascript复制实例详解
2016/01/28 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python通过函数属性实现全局变量的方法
2015/05/16 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
Python基础之文件读取的讲解
2019/02/16 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
利用python汇总统计多张Excel
2020/09/22 Python
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
波兰最大的宠物用品网上商店:FERA.PL
2019/08/11 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
酒店led欢迎词
2014/01/09 职场文书
股权投资意向书
2014/04/01 职场文书
工程材料采购方案
2014/05/18 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
体育教师研修感悟
2015/11/18 职场文书
Python中Selenium对Cookie的操作方法
2021/07/09 Python
python+opencv实现目标跟踪过程
2022/06/21 Python