对 CORS 预检的响应具有 HTTP 状态代码 405

Posted

技术标签:

【中文标题】对 CORS 预检的响应具有 HTTP 状态代码 405【英文标题】:Response to CORS preflight has HTTP status code 405 【发布时间】:2018-02-19 06:33:58 【问题描述】:

这几乎是一个已知的标准错误,但无法使用现有的 *** 帖子修复。

XMLHttpRequest 无法加载https://myserver.com/context/ 对预检请求的响应未通过访问控制检查: 请求中不存在“Access-Control-Allow-Origin”标头 资源。 因此,Origin 'https://www.otherwebsite.com' 不允许访问。 响应的 HTTP 状态代码为 405。

以下是我的代码 -

function setHeader(xhr) 
    xhr.setRequestHeader("Access-Control-Allow-Origin", "*");


var url = "https://myserver.com/context/";
$.ajax(
    url: url,
    type: 'GET', dataType:'json',
    success: function(data) 
        _this.question(data.question);
        _this.questionId(data.questionId);
        _this.choices(data.choices);
    , error: function() 
        console.log("ERROR in getting microquestion");
    ,
    beforeSend: setHeader
);

【问题讨论】:

读取错误消息:“没有'Access-Control-Allow-Origin'标头存在请求的资源 我刚刚意识到试图指出什么错误。问题出在服务器端。这就是“请求的资源”的意思。感谢@sideshowbarker 明确指出了这一点。为你们俩点赞 【参考方案1】:

“对预检请求的响应...有 HTTP 状态代码 405。” 消息表明,要开始,https://myserver.com/context/ 端点需要配置为正确处理 OPTIONS 请求——即使它可能已经设置为“正常”请求发回正确的 CORS 标头。

有关正在发生的事情的更多详细信息,您可以在 No 'Access-Control-Allow-Origin' header is present on the requested resource—when trying to get data from a REST API 阅读答案的如何避免 CORS 预检部分 - 但它的要点是,最低限度,服务器必须以 2xx 成功状态码响应 OPTIONS 请求。

【讨论】:

以上是关于对 CORS 预检的响应具有 HTTP 状态代码 405的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 CORS - XMLHttpRequest 无法加载 http://myapi.com。预检响应具有无效的 HTTP 状态代码 500

Yii2 和 reactjs CORS 过滤器给出错误:预检响应具有无效的 HTTP 状态代码 401

CORS 策略:对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态

预检响应具有无效的 HTTP 状态代码 404”

预检响应具有无效的 HTTP 状态代码 401 - Spring

CORS 问题? - 预检响应包含无效的 HTTP 状态代码 405