【问题标题】:React + Codeigniter Response for preflight is invalidReact + Codeigniter 预检响应无效
【发布时间】:2019-05-25 02:40:58
【问题描述】:

我有一个使用 codeigniter MVC 构建的网站,但遵循现代趋势,我正在尝试创建一个基于 react 的前端。我仍然想使用原始的 codeigniter 框架和控制器,但是我希望它返回纯 JSON,而不是渲染视图。目前,我无法将请求从在 localhost:3000 上以调试模式运行的 react 应用程序发送到在 apache http://mywebsite:80 上运行的 codeigniter api

这就是我发起请求的方式:

fetch("http://mywebsite/Api" + route + '/', {
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json'
        },
        method: "POST",
        redirect: 'follow',
        body: JSON.stringify(data),
        dataType : 'json'
      })

这是我在控制台中遇到的错误:

无法加载http://mywebsite/ApiAuth/login/:预检响应 无效(重定向)

我的 php 页面发回以下内容:

header('Content-Type: application/json;charset=UTF-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: DELETE, HEAD, GET, OPTIONS, POST, PUT');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
header('Access-Control-Max-Age: 1728000');

控制台输出:

Request URL: http://mywebsite/ApiAuth/login/
Request Method: OPTIONS
Status Code: 302 Found
Remote Address: [::1]:80
Referrer Policy: no-referrer-when-downgrade

【问题讨论】:

  • 我希望您通过令牌或其他方式进行身份验证。您应该禁用对OPTIONS 请求的身份验证检查并仅返回标头。
  • 这是后端服务器的问题。您需要配置您的 nginx/apache 重定向选项 -> 返回 200。

标签: php reactjs codeigniter


【解决方案1】:

能够通过设置 Apache 响应标头和重定向方法来解决问题,如下所示:

#Redirect for CORS Preflight request              
RewriteCond %{REQUEST_METHOD} OPTIONS 
RewriteRule ^(.*)$ $1 [R=200,L]

#Set headers to access CORS Requests / allowing localhost only
Header always add Access-Control-Allow-Origin "*"
Header always add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header always add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

【讨论】:

    猜你喜欢
    • 2016-09-25
    • 2018-02-21
    • 2016-10-20
    • 2017-04-25
    • 2016-06-20
    • 2019-03-18
    • 2017-11-15
    • 1970-01-01
    • 2018-06-17
    相关资源
    最近更新 更多