对 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 状态