how to do in angular2: $httpProvider.defaults.headers.common



我有这样的代码:

客户端(angular2)托管在这个url上:

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)

承载在这个url上:

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)

我看到了这篇文章和这篇文章

如何在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 = {};
}]);

您的java服务器禁用了CORS请求。在客户端更改请求将不起作用,因为当在另一个URL上请求服务器时(即使它只是本地主机上的不同端口)会自动创建OPTIONS请求。这是你无法回避的。

相反,您应该在java服务器上启用CORS。这是一个java jersey教程,它还详细介绍了什么是CORS。

最新更新