Angular 2 RC5向http请求添加标头不起作用

时间:2016-08-25 21:05:37

标签: angular angular2-http

简单的例子,它不起作用:

let headers = new Headers();
headers.append('Authorization', 'Test');
let options = new RequestOptions({
  headers: headers,
  body: {}, //This body empty fix #10668
});
this.http.get('backend url another external domain', options)
  .subscribe((res:Response) => {
  console.log(res);
});

标题未添加到请求中。

注意到我调用的网址是外部的,内部工作。

为什么标题地图仅在具有相对路径的本地域中发送?

3 个答案:

答案 0 :(得分:0)

尝试

let body =    JSON.stringify({ dataToSend });
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });

return this.http.post('Url', body, options)
                .map(this.extractData)
                .catch(this.handleError);

}

答案 1 :(得分:0)

这是一个CORS问题。角度

没问题

答案 2 :(得分:0)

如果使用JAX-RS,请确保使用标题更新CorsFilter,如下所示

@Provider
public class CORSFilter implements ContainerResponseFilter {
   @Override
   public void filter(final ContainerRequestContext requestContext,
                      final ContainerResponseContext cres) throws IOException {
      cres.getHeaders().add("Access-Control-Allow-Origin", "*");
      cres.getHeaders().add("Access-Control-Allow-Headers", "login, origin, X-Requested-With, content-type, accept, authorization");
      cres.getHeaders().add("Access-Control-Allow-Credentials", "true");
      cres.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, HEAD");
      cres.getHeaders().add("Access-Control-Max-Age", "1209600");
   }
}