jQuery ajax CORS 请求

Posted

技术标签:

【中文标题】jQuery ajax CORS 请求【英文标题】:jQuery ajaxs CORS request 【发布时间】:2015-12-15 12:02:43 【问题描述】:

我在 CORS 资源中调用 jQuery ajax 请求。后端在 nginx 上工作,并设置了允许所有域和所有请求类型的 OPTIONS 钩子和响应。但不幸的是,我收到了错误回调。在 Chrome 网络控制台上,我在 OPTIONS 请求上看到了 204 答案。而且我从未见过我原来的 POST 请求。

var email = $('#your_email').val();
var sendData = 
    issue: 
        description: "email:" + email,
        category_id: 1
    
;

$.ajax(
    url: "https://domen/issues.json",
    type: "POST",
    beforeSend: function (xhr) 
        xhr.setRequestHeader("Authorization", "Basic " + btoa("goodtry:goodtryq"));
        xhr.setRequestHeader("Accept", "application/json");
        xhr.setRequestHeader("Content-type", "application/json")
    ,
    data: JSON.stringify(sendData),

    success: function (val) 
        alert("Thanks you, we are going to contact you soon");
    ,
    error: function (val) 
        alert("Please check your internet connection");
    
);

【问题讨论】:

它在响应标头中没有显示任何内容。你在你的后端代码中处理过吗? 只是快速检查将“dataType”设置为json 204状态是我认为的问题,尝试为OPTIONS请求返回200,看看是否发送了POST @Akki619 json 数据类型没有帮助。 @charlietfl 204 没问题,因为我已将其更改为 200,并得到相同的情况 【参考方案1】:

这样就解决了。我错过了诊断信息

Request header field Authorization is not allowed by Access-Control-Allow-Headers.

在这里可以找到非常有用的答案: https://***.com/a/24556330/2835239

【讨论】:

如果其他人有这个问题,我发现很多浏览器在请求有问题时都​​会报告这个消息,甚至与CORS无关。当我遇到这个页面时,这就是我的情况。

以上是关于jQuery ajax CORS 请求的主要内容,如果未能解决你的问题,请参考以下文章

javascript 用于CORS请求的jQuery.ajax()方法的Flickr API请求

使用 jQuery Ajax 和 PHP 的 CORS 请求

Bottle Py:为 jQuery AJAX 请求启用 CORS

jQuery+ASP.NET MVC基于CORS实现带cookie的跨域ajax请求

如果修改 XHR,则 JQuery AJAX 请求失败并出现 CORS 错误

CORS - jQuery 获取 ajax 响应状态失败