2016-07-28 104 views
0

无法进行HTTPS XMLHttpRequest请求 - 得到这个回:否“访问控制允许来源”为HTTPS头请求

Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://localhost:8443' is therefore not allowed access.

如果我www.google.com更换网址,它的罚款,但https://www.google.com做同样的事情。

它适用于我使用Postman/JaSON Chrome扩展时,所以我试过open -a Google\ Chrome --args --disable-web-security,但那也不起作用。

let request = new XMLHttpRequest(); 
request.open("POST", "https://outlook.office365.com/EWS/Exchange.asmx", true); 
request.setRequestHeader("Authorization", "Bearer " + asyncResult.value); 
request.setRequestHeader("Content-type", "text/xml; charset=utf-8"); 
request.setRequestHeader('Access-Control-Allow-Origin', '*'); 
request.setRequestHeader("Access-Control-Allow-Headers", "Content-type, Origin"); 
request.setRequestHeader("Access-Control-Allow-Methods", "POST"); 
request.onload = function() { 

}; 
request.onerror = function() { 
    debugger; 
} 
request.send(requestBody); 
+0

服务器设置CORs不是JavaScript – epascarello

+1

我猜'outlook.office365.com'不是你的域名,出于安全原因你不能做交叉源AJAX *(除非**服务器**发送CORS *)。 – adeneo

+0

@ adeneo是的,它现在来自'localhost',但仍然需要发送一个请求到'outlook.office365.com'来获取数据 – Kristin

回答

0

出于安全原因,“Access-Control-Allow-Origin”头设置为服务器端。

如果你有机会访问你可能只是做服务器:

header("Access-Control-Allow-Origin: *"); 

然而,这不是明显的原因是安全的。您应该始终允许尽可能少的外部访问。

最近我有同样的问题。我所做的只是使用自己的服务器,从那里向api发出请求,然后让脚本向我的服务器发出请求(可以从中设置访问控制头)。所以基本上,而不是向第三方客户端(从JavaScript)提出请求,使其成为服务器端,然后通过JavaScript从服务器获取数据。

相关问题