2017-09-11 161 views
2

这几乎是一个已知的标准错误,但无法使用现有的Stackoverflow帖子修复相同的问题。无法解决访问控制问题

的XMLHttpRequest不能加载https://myserver.com/context/
响应预检请求未通过访问控制检查:
否“访问控制允许来源”标题存在于所请求的资源 。
原因'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 
}); 
+1

阅读错误消息:“_No'Access-Control-Allow-Origin'头部存在__on所请求的资源__._” – Teemu

+1

*“对预检请求的响应...具有HTTP状态码405”*表示要启动,即使您已经配置了将正确的CORS头发送回“正常”请求,也需要将“https:// myserver.com/context /”端点配置为正确处理OPTIONS请求。有关详细信息,请参阅https://stackoverflow.com/questions/43871637/no-access-control-allow-origin-header-is-present-on-the-requested-resource-whe/43881141#43881141但其要点是,最低限度地,服务器必须以2xx成功状态代码回应OPTIONS请求 – sideshowbarker

+0

我刚刚意识到什么错误正试图指出。问题出在服务器端。这就是“请求资源”的含义。感谢@sideshowbarker明确指出。 Upvoting你们俩 – comiventor

回答

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 - 但它的要点答案是,微创,服务器必须向OPTIONS请求与2xx成功状态码。