react中fetch之cors跨域请求的实现方法

网友投稿 738 2023-02-13


react中fetch之cors跨域请求的实现方法

项目中使用了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、xxx.com

2、data.xxx.com

第一个域名用于react部分,端口号是3000(调试用,正式上线是80)

第二个域名用于api,端口号是80

于是乎出现跨域问题。

cors详细的介绍请看://jb51.net/article/102694.htm

以下是php部分的允许跨域域名访问的设置

$origin = isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:'';

$allowOrigin = [

'http://xxx.com',

'http://xxx.com'

];

if (in_array($origin, $allowOrigin)) {

header('Access-Control-Allow-Origin: ' . $origin);

}

header('Access-Control-Allow-MethoyzjCFYPds: 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);

});


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java api接口管理(java调用api接口实例)
下一篇:解决Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~