所有分类
  • 所有分类
  • 后端开发

react每日一学:聊聊fetch之cors跨域请求的应用

每日一学react:谈谈fetchcors跨域请求的应用。

react用于项目,需要fetch代替ajax。

因为reactcreate_react_app工具非常方便,基本上开箱即用。创建项目后,输入npm start命令后,自动监控3000个端口,到此前端部分就绪。

我在后端部分使用phalcon。

由于前端和后端的分离,为了方便,我试图在nginx中使用同一域(前端和后台api的顶级域名相同),但phalcon框架是一个单入口,react监控3000,通过nginx反向代理,js找不到问题,所以我放弃了同一域的计划。

所以我配置了两个域名:

1、www.xxx.com
2、data.xxx.com

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

因此出现了跨域问题。

以下是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);
});

试试吧。

原文链接:https://www.icz.com/technicalinformation/web/seo/2023/05/9452.html,转载请注明出处~~~
0
注意:请收藏好网址www.icz.com,防止失联!站内免费资源持续上传中…!赞助我们
显示验证码
没有账号?注册  忘记密码?