Angular 2 个自定义的 Http headers 得到 405
Angular 2 Http with custom headers getting 405
我 运行 在尝试执行来自 angular 的 Http GET 请求时使用自定义 header 解决了这个问题 2. 执行来自 Postman 的相同请求工作正常,但是我在 Angular2 中收到以下 405 错误:
OPTIONS http://[somehost.com]/api/v1/admin/account/singin 405 (Method Not Allowed)
API 有一个 GET 操作,您在 header 中传递用户名和密码,它 returns 一个带有令牌的 200 header。这是我正在使用的代码块的示例:
constructor (private http: Http) {
}
login (userName: string, password: string): Observable<any> {
const endPointUrl = this.baseUrl + '/admin/account/singin';
const headers = new Headers({
'Accept': 'application/json',
'X-Rem-Username': userName,
'X-Rem-Password': password
});
const options = new RequestOptions({headers: headers});
return this.http.get(endPointUrl, options)
.map((response: Response) => {
console.log(response);
return response;
});
}
正如我提到的,在 Postman 和 WebStorm REST 客户端中使用这些 header 执行此请求工作正常。如果我删除这些 'X-Rem' headers 我得到一个 401,这是预期的。如有任何帮助,我们将不胜感激。
我不确定,但你可以尝试添加这个 header:
"Access-Control-Expose-Headers" : "Authorization"
我在这个discussion
中找到了它
这不是 angular 应用程序的问题。您的应用和休息 api 服务器不同 server/domain。您应该在服务器中配置跨域允许。每当您通过 Web 浏览器在服务器上请求任何 api 时,它首先通过请求 OPTION
方法检查跨域允许选项。在postman中api直接发送,没有跨域。
试试这个
const headers = new Headers({
'Accept': 'application/json',
'X-Rem-Username': userName,
'X-Rem-Password': password
});
this.http.get('url', {headers: headers})
我 运行 在尝试执行来自 angular 的 Http GET 请求时使用自定义 header 解决了这个问题 2. 执行来自 Postman 的相同请求工作正常,但是我在 Angular2 中收到以下 405 错误:
OPTIONS http://[somehost.com]/api/v1/admin/account/singin 405 (Method Not Allowed)
API 有一个 GET 操作,您在 header 中传递用户名和密码,它 returns 一个带有令牌的 200 header。这是我正在使用的代码块的示例:
constructor (private http: Http) {
}
login (userName: string, password: string): Observable<any> {
const endPointUrl = this.baseUrl + '/admin/account/singin';
const headers = new Headers({
'Accept': 'application/json',
'X-Rem-Username': userName,
'X-Rem-Password': password
});
const options = new RequestOptions({headers: headers});
return this.http.get(endPointUrl, options)
.map((response: Response) => {
console.log(response);
return response;
});
}
正如我提到的,在 Postman 和 WebStorm REST 客户端中使用这些 header 执行此请求工作正常。如果我删除这些 'X-Rem' headers 我得到一个 401,这是预期的。如有任何帮助,我们将不胜感激。
我不确定,但你可以尝试添加这个 header:
"Access-Control-Expose-Headers" : "Authorization"
我在这个discussion
中找到了它这不是 angular 应用程序的问题。您的应用和休息 api 服务器不同 server/domain。您应该在服务器中配置跨域允许。每当您通过 Web 浏览器在服务器上请求任何 api 时,它首先通过请求 OPTION
方法检查跨域允许选项。在postman中api直接发送,没有跨域。
试试这个
const headers = new Headers({
'Accept': 'application/json',
'X-Rem-Username': userName,
'X-Rem-Password': password
});
this.http.get('url', {headers: headers})