javascript - CORS 错误 - 我的 header

标签 javascript php ajax cors

在提出这个问题之前,我尝试做功课,但我看不到标题中缺少的内容。

我在 JavaScript 中设置了以下 header :

xhr.setRequestHeader('Access-Control-Allow-Headers', 'Origin, Accept, Content-Type, Access-Control-Allow-Origin');
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET,POST');
xhr.setRequestHeader('Content-Type', 'application/json');

服务器发送带有响应的 header :

Pragma: no-cache
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: PUT, GET, POST, OPTIONS
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Access-Control-Max-Age: 86400
Transfer-Encoding: chunked
Cache-Control: no-store, must-revalidate, no-cache, post-check=0, pre-check=0
Date: Wed, 15 Mar 2017 03:39:49 GMT
Set-Cookie: PHPSESSID=1ng3l10lvrrovlmdbij5chv2f5; path=/
Server: Apache
Content-Type: application/json
Expires: Thu, 19 Nov 1981 08:52:00 GMT

但是我在浏览器(FF 和 Chrome)中收到错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://api.mydomain.com/login. (Reason: missing token ‘access-control-allow-headers’ in CORS header ‘Access-Control-Allow-Headers’ from CORS preflight channel).

有人能看到我缺少什么吗?

最佳答案

这个解决方案似乎运作良好。

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']) && $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] == 'POST') {
        header('Access-Control-Allow-Origin: *');
        header('Access-Control-Allow-Headers: X-Requested-With, content-type, access-control-allow-origin, access-control-allow-methods, access-control-allow-headers');
    }
    exit;
}

header('Content-type: application/json');
header('Access-Control-Allow-Origin: *');

Javascript:

xhttp.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
xhttp.setRequestHeader("Access-Control-Allow-Origin", "*");
xhttp.setRequestHeader("Access-Control-Allow-Methods", "GET, POST, PUT, OPTIONS");
xhttp.setRequestHeader("Access-Control-Allow-Headers", "Content-Type");
xhttp.setRequestHeader("Access-Control-Request-Headers", "X-Requested-With, accept, content-type");

关于javascript - CORS 错误 - 我的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42800935/

相关文章:

php - 在 Sql 请求中使用别名

javascript - Rails 无需离开页面即可更新模型

javascript - 如果未选中复选框,则显示警报消息

javascript - 无法获取右侧选项卡内容

javascript - 如何添加转换样式以始终有效?

javascript - AngularJs 在 HTML 模板中分离数组和字符串

php - 无法在 WAMPSERVER 2.5 上设置 HTTPS

php - jquery ui自动完成html表单多输入类型和mysql

javascript - 我的 jQuery ajax if/else on click 不起作用

c# - 在这种情况下如何进行ajax?