Javascript Angular 2 Http,自定义头获取405

Javascript Angular 2 Http,自定义头获取405,javascript,angular,http,angular2-http,Javascript,Angular,Http,Angular2 Http,我在尝试从angular 2执行Http GET请求和Http GET请求时遇到了自定义头的问题。执行来自Postman的相同请求很好,但是我在Angular2中得到以下405错误: OPTIONS http://[somehost.com]/api/v1/admin/account/singin 405 (Method Not Allowed) API有一个GET操作,您在头中传递用户名和密码,它返回一个200,头中有一个令牌。下面是我正在使用的代码块示例: constructor (pri

我在尝试从angular 2执行Http GET请求和Http GET请求时遇到了自定义头的问题。执行来自Postman的相同请求很好,但是我在Angular2中得到以下405错误:

OPTIONS http://[somehost.com]/api/v1/admin/account/singin 405 (Method Not Allowed)
API有一个GET操作,您在头中传递用户名和密码,它返回一个200,头中有一个令牌。下面是我正在使用的代码块示例:

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;
    });
}
构造函数(私有http:http){
}
登录(用户名:string,密码:string):可观察{
const endPointUrl=this.baseUrl+'/admin/account/singin';
const headers=新的头({
“接受”:“应用程序/json”,
“X-Rem-Username”:用户名,
“X-Rem-Password”:密码
});
const options=newrequestoptions({headers:headers});
返回此.http.get(endPointUrl,选项)
.map((响应:响应)=>{
控制台日志(响应);
返回响应;
});
}

正如我提到的,在Postman和WebStorm REST客户机中使用这些头执行此请求可以很好地工作。如果我删除这些“X-Rem”标题,我会得到一个401,这是预期的。非常感谢您的帮助。

我不确定,但您可以尝试添加以下标题:

  "Access-Control-Expose-Headers" : "Authorization"

我在这个

中找到了它,这不是angular应用程序的问题。您的应用程序和rest api服务器是不同的服务器/域。您应该在服务器中配置跨域允许。每当您通过web浏览器请求服务器上的任何api时,它都会首先通过请求
OPTION
方法检查跨域允许选项。在postman api Direct send中,没有跨域。

试试这个

const headers = new Headers({
    'Accept': 'application/json',
    'X-Rem-Username': userName,
    'X-Rem-Password': password
});

this.http.get('url', {headers: headers})

X-Rem-Username
X-Rem-Password
添加到您的CORS响应标题中。。假设你已经在你的服务器上安装了CORS。嗨,我会要求提供商这样做。谢谢汉克斯,这就成功了,最后CORS没有在API端正确安装。