如何做angular2:$ httpProvider.defaults.headers.common = {}

时间:2016-09-23 23:11:02

标签: javascript angularjs http angular typescript

我有这段代码:

托管在此网址上的

客户端(angular2):

http://localhost:8080/Me/html/pages/gasolina/country/USA

代码:

  return this.http
          .post(this.supporToolSaveUrl, gasConfigModel, {headers: headers})
          .map(res => res.json())
          .subscribe(
            data => {
              console.info("next: ");
              console.info(data)
            },
            err => console.error(err)
          );

server(java jersey)

托管在此网址:

http://localhost:8080/Me/services/countries

代码:

 @Path("/SaveConfig")
    @POST
    @Consumes(MediaType.APPLICATION_JSON + ";charset=utf-8")
    @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
    public void saveConfig(CountryGasStationConfig countryGasStationConfig) throws Exception {

我应该在jersy注释中添加这些吗?

当我在本地运行时,我收到此错误:

MLHttpRequest cannot load http://locahost:8080/.... Response for preflight is invalid (redirect)

我看到了这个post和这篇帖子

我如何在angular2中制作此解决方案?

应用程序。

config(['$httpProvider', function ($httpProvider) {
  //Reset headers to avoid OPTIONS request (aka preflight)
  $httpProvider.defaults.headers.common = {};
  $httpProvider.defaults.headers.post = {};
  $httpProvider.defaults.headers.put = {};
  $httpProvider.defaults.headers.patch = {};
}]);

1 个答案:

答案 0 :(得分:0)

您的Java服务器已禁用CORS请求。在客户端更改请求将不起作用,因为在另一个URL上请求服务器时会自动创建OPTIONS请求(即使它只是localhost上的其他端口)。你无法绕过这个。

相反,您应该在Java服务器上启用CORS。 Here's a tutorial对于java jersey,它也详细介绍了CORS是什么。