【发布时间】:2017-10-18 09:30:20
【问题描述】:
我有一个从本地主机运行的 Angular 应用程序,并尝试通过 POST 访问另一个域中的 REST URL。我在 http 请求中发送“Content-Type”和“Authorization”标头。所以我猜由于 Authorization 标头,这个请求得到了一个 OPTIONS 检查。
这些是我的请求标头
接受:/
接受编码:gzip、deflate、sdch
接受语言:en-US,en;q=0.8
访问控制请求标头:授权、内容类型
访问控制请求方法:POST
连接:保持活动
主机:tmatxx101:8080
来源:http://localhost:4200
推荐人:http://localhost:4200/search
用户代理:Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
这些是我的响应标头
访问控制允许凭据:true
访问控制允许标头:内容类型、接受、授权
访问控制允许方法:GET、POST、PUT、DELETE、OPTIONS
访问控制允许来源:http://localhost:4200
访问控制最大年龄:1800
内容长度:0
日期:格林威治标准时间 2017 年 5 月 18 日星期四 12:49:06
Set-Cookie:JSESSIONID=199td8fal1ak21ix0kgjljrqgp;Path=/bpm;HttpOnly
和常规部分
请求网址:http://tmatxx101:8080/bpm/rest/process/start/xxxxxx.bpm.xpdl/xxxxx/1.0.0.20170517150430523
请求方法:OPTIONS
状态码:401 HTTP 会话中没有安全上下文
远程地址:172.16.35.84:8080
推荐人政策:no-referrer-when-downgrade
控制台也包含错误
预检响应包含无效的 HTTP 状态代码 401
我的疑问是,由于响应标头包含 Access-Control-Allow-Origin 和 localhost,我应该能够访问该方法,但我仍然收到该错误
访问控制允许凭据:true
访问控制允许标头:内容类型、接受、授权
访问控制允许方法:GET、POST、PUT、DELETE、OPTIONS
访问控制允许来源: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());
}
);
【问题讨论】:
标签: angular cors angular-http