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 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(3)
Dec 23 Javascript
JS 时间显示效果代码
Aug 23 Javascript
Javascript中的delete介绍
Sep 02 Javascript
jquery中选择块并改变属性值的方法
Jul 31 Javascript
如何在Linux上安装Node.js
Apr 01 Javascript
BootStrap 模态框实现刷新网页并关闭功能
Jan 04 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
Feb 21 Javascript
使用vue如何构建一个自动建站项目
Feb 05 Javascript
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
vue拖拽组件使用方法详解
Dec 01 Javascript
微信小程序中的列表切换功能实例代码详解
Jun 09 Javascript
jdk1.8+vue elementui实现多级菜单功能
Sep 24 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
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
快速入门Vue
2016/12/19 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
使用python获取邮箱邮件的设置方法
2019/09/20 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
户籍证明的格式
2014/01/13 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
论文答辩开场白大全
2015/05/27 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
开学随笔
2015/08/15 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
Python可视化神器pyecharts绘制水球图
2022/07/07 Python
MySQL 原理与优化之Update 优化
2022/08/14 MySQL