【发布时间】:2017-03-25 09:55:02
【问题描述】:
我从OAuth2 服务器请求authorization code。
我的目的是使用我的 microsoft App 授权用户。
参考Document
我尝试获取呼叫:
function httpGet(){
var theUrl = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id="client_id"&response_type=code&redirect_uri="redirect_uri"&response_mode=query&resource=https%3A%2F%2Fservice.contoso.com%2F&state=12345";
var req = new XMLHttpRequest();
req.open('GET', theUrl, true);
req.onreadystatechange = function() {
if (req.readyState === 4) {
if (req.status >= 200 && req.status < 400) {
console.log(req.responseText)
} else {
console.log("error")
}
}
};
req.send();
}
但这会产生以下错误:
请求中没有“Access-Control-Allow-Origin”标头 资源。
然后我添加req.setRequestHeader("Access-Control-Allow-Origin", "*");
但它给出了以下错误:
对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。
【问题讨论】:
-
你需要在服务器上配置这个,而不是 Angular 应用
-
@jonrsharpe “您需要在服务器上进行配置”是什么意思?
-
我的意思是您向其发出请求的服务器。尽管这似乎超出了您的控制范围。
-
我正在尝试请求 OAuth2 服务器。
-
是的,我明白这一点。但是服务器需要知道它应该响应哪些来源。也许您需要添加一些配置;参见例如stackoverflow.com/questions/28283037/…
标签: javascript azure cors oauth2