为什么我的CORS请求被拒绝?

时间:2017-02-08 22:52:10

标签: javascript xmlhttprequest cors httprequest

相关question

我正在尝试向API发送POST请求以进行测试。我一直在

  

对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。来源' {我的本地IP}'因此不允许访问。响应的HTTP状态代码为403。

以下是相关代码:

function searchSimilar2(){
var base_url = "{request url}"
var send_url = base_url + "{inline arguments}"
var params = '{"size":10, "mediaUrl":"https://cdn.yoox.biz/39/39706632kh_20_f.jpg2"}'

function func(){
    console.log(this.response)
}

var hReq = new XMLHttpRequest();
hReq.open('POST', send_url)
hReq.setRequestHeader('Content-Type', 'application/json')
hReq.onload = func;
hReq.send(params)

我省略了请求url和参数,因为我知道问题不在于它们。

根据链接的问题答案,我没有使用JQuery,我正在运行一个python SimpleHTTPServer,我发送此请求。我一直收到这个错误。

2 个答案:

答案 0 :(得分:2)

您需要在SimpleHttpServer响应上设置“Access-Control-Allow-Origin”标头值。标头值需要包含请求应用程序的主机名或IP。或者,您可以设置“*”通配符值以允许所有来源,但是如果您确实想要允许所有来源,那么您应该这样做,因为它会创建一些XSS漏洞:

//allow single origin
self.send_header('Access-Control-Allow-Origin', 'http://yourapp.com')
self.end_headers()

-OR -

//allow all origins
self.send_header('Access-Control-Allow-Origin', '*') 
self.end_headers()

答案 1 :(得分:0)

通过更改服务器的设置,我可以使用它。

请求的部分网址是“v1 / api”,由于某种原因将其切换为“api / v1”,一切正常。