角度 CORS 选项不起作用



我有一个从本地主机运行的角度应用程序,并尝试通过 POST 访问另一个域中的 REST URL。我正在 http 请求中发送"内容类型"和"授权"标头。所以我想由于授权标头,此请求会得到选项检查。

这些是我的请求标头

Accept:/
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8 访问控制-请求-
标头:授权,内容类型
访问控制-请求-方法:POST
连接:保持活动状态 主机:
tmatxx101:8080 来源:http://localhost:4200

引用:http://localhost:4200/search
User-Agent:Mozilla/5.0 (Windows NT 6.3;赢64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

这些是我的响应标头

访问控制允许凭据:true 访问控制允许标头:内容类型,接受,授权 访问控制允许方法:获取,发布,放置,删除,选项 访问控制允许来源:http://localhost:4200


访问控制最大年龄:
1800
内容长度:0
日期:2017 年 5 月 18 日星期四 12:49:06 GMT
设置-cookie:JSESSIONID=199td8fal1ak21ix0kgjljrqgp;路径=/bpm;仅 httponly

"常规"部分

请求网址:http://tmatxx101:8080/bpm/rest/process/start/xxxxxx.bpm.xpdl/xxxxx/1.0.0.20170517150430523
请求方式:选项
状态代码:401 HTTP 会话
中没有安全上下文 远程地址:172.16.35.84:8080
反向链接策略:降级时无反向链接

控制台还包含一个错误
检响应具有无效的 HTTP 状态代码 401

我的怀疑是,由于响应标头包含访问控制允许来源和本地主机,我应该能够访问该方法,但我仍然收到该错误

访问控制允许凭据:真
访问控制允许标头:内容类型,接受,授权
访问控制允许方法:获取,发布,放置,删除,选项
访问控制允许源:http://localhost:4200

我应该在 Angular 代码上做些什么来完成这项工作,或者我应该为此联系服务器团队。我的 Angular 代码如下

const headers = new Headers({'Content-Type': 'application/xml', 'Authorization':'Basic xxxx'});
this.http.post(url, jsonRequest, {headers: headers})
.subscribe(
(response: Response) => {
console.log(response.json());
}
);

在 Chrome 的网址地址栏末尾有一个图标,您可以在其中取消阻止不安全的内容。 我认为这是因为它的https试图获取非http api调用。

尝试将 withCredentials 设置为 true。例如:

this.http.post(url, jsonRequest, {headers: headers, withCredentials: true})
.subscribe(
(response: Response) => {
console.log(response.json());
}
);

顺便说一句:请求没有Authorization标头。

编辑:实际上我认为这无济于事,服务器可能返回401。我不认为这是 CORS 问题。也许我们缺少一些代码。

最新更新