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 相关文章推荐
国外大牛IE版本检测!现在IE都到9了,IE检测代码
Jan 04 Javascript
js汉字转拼音实现代码
Feb 06 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
修改js confirm alert 提示框文字的简单实例
Jun 10 Javascript
简单实现js轮播图效果
Jul 14 Javascript
BootStrap模态框不垂直居中的解决方法
Oct 19 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 Javascript
Vue实现商品分类菜单数量提示功能
Jul 26 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
Nov 06 Javascript
Vue如何循环提取对象数组中的值
Nov 18 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实现快速排序法函数代码
2012/08/27 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
jQuery cdn使用介绍
2013/05/08 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
vue视图不更新情况详解
2019/05/16 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
2020/07/22 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
[03:05]DOTA2英雄基础教程 嗜血狂魔
2013/12/10 DOTA
在 Django/Flask 开发服务器上使用 HTTPS
2014/07/03 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
Python unittest单元测试框架实现参数化
2020/04/29 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
挪威手表购物网站:Klokker
2016/09/19 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
远程教育心得体会
2014/01/03 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
2015入党自传格式范文
2015/06/26 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL