【发布时间】:2017-03-14 13:29:49
【问题描述】:
我正在开发一个带有 Angular 的 Web 应用程序,它向我的 Azure API 发送请求。 API 受角度保护。当我在浏览器中调用 url 时,我被重定向到 microsoft 登录页面。登录后我回到 API。
现在,我想从我的 Angular 应用向 API 发送请求:
const auth = btoa("[my username]:[my password]");
headers = {"Authorization": "Basic " + auth};
$http.get("http://[webapp name].azurewebsites.net/api/contacts", {headers: headers}).then(function (response) {
console.log("!!!LoggedIn!!!");
});
我在 azure 门户中将 [webapp name].azurewebsites.net 添加到了我的 CORS。 当我执行此操作时,我收到错误:
[错误] 加载资源失败:服务器响应状态为 400(错误请求)
[错误] 加载资源失败:预检响应不成功
[错误] XMLHttpRequest 无法加载http://[webappname].azurewebsites.net/api/contacts
azurewebsites.net/api/contacts。预检响应不成功
知道怎么解决吗?
更新
我用这段代码再次尝试:
const auth = btoa("[my username]:[my password]");
var config = {headers: {
'Authorization': 'Basic ' + auth,
"Origin": "http://[webapp name].azurewebsites.net/api/contacts",
"Access-Control-Request-Method": "GET",
"Access-Control-Request-Headers": "X-Custom-Header"
}
};
$http.get("http://[webapp name].azurewebsites.net/api/contacts", config).then(function (response) {
console.log("!!!LoggedIn!!!");
});
现在我收到这些错误:
拒绝设置不安全的标头“Origin”
拒绝设置不安全的标头“Access-Control-Request-Method”
拒绝设置不安全的标头“Access-Control-Request-Headers”
对预检请求的响应未通过访问控制检查:请求中不存在“Access-Control-Allow-Origin”标头 资源。因此,Origin 'null' 不允许访问。响应 有 HTTP 状态码 400
当我删除这些“不安全的标头”时,最后一条错误消息仍然存在。
为什么 Origin 自动为空?
【问题讨论】:
-
CORS 配置应该在您的后端服务器端设置,这取决于您在后端使用的语言或框架。如有任何进一步的问题,请随时告诉我。
标签: angularjs http azure xmlhttprequest