Angular 2 Http,自定义标题获得405

时间:2017-04-23 07:21:33

标签: javascript angular http angular2-http

我尝试执行自定义标头时遇到此问题并从角度2发出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;
    });
}

正如我所提到的,在Postman和WebStorm REST客户端中使用这些标头执行此请求可以正常工作。如果我删除这些&#39; X-Rem&#39;标题我得到401,这是预期的。任何帮助将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:1)

试试这个

SET_PROPERTY(TARGET Project_name PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "path")

答案 1 :(得分:0)

我不确定但您可以尝试添加此标头:

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

我在discussion

中找到了它

答案 2 :(得分:0)

这不是角度应用程序的问题。您的应用和其他api服务器是不同的服务器/域。您应该在服务器中配置跨域允许。每当您通过Web浏览器请求服务器上的任何api时,它首先通过请求OPTION方法检查跨域允许选项。在postman api中直接发送,没有跨域。