【问题标题】:how to do in angular2: $httpProvider.defaults.headers.common = {}如何在 angular2 中执行:$httpProvider.defaults.headers.common = {}
【发布时间】:2017-02-01 21:44:17
【问题描述】:

我有这个代码:

客户端(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)
          );

服务器(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 {

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

当我在本地运行时出现此错误:

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

【问题讨论】:

  • 如果您控制服务器,为什么不在服务器上正确处理 CORS,而不是尝试求助于一些客户端黑客。
  • 我不想让所有网站都使用 CROS,你建议如何在服务器端解决这个问题?客户端和服务器共享同一个域,应该不会抛出 CROS 错误

标签: javascript angularjs http angular typescript


【解决方案1】:

您的 java 服务器禁用了 CORS 请求。在客户端更改您的请求将不起作用,因为在另一个 URL 上请求服务器时会自动创建 OPTIONS 请求(即使它只是 localhost 上的不同端口)。没有办法解决这个问题。

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

【讨论】:

  • 但是客户端和服务器的url相同,包括http协议和相同的端口。
  • 我已经编辑了我的 q,显示客户端和服务器具有相同的 url。顺便说一句,如果您说修复客户无济于事 - 为什么它是我问题正文中其他 SF 帖子中公认的答案?
  • 因为这是AngularJS特有的,你不是要求Angular2中的解决方案吗?也许您的网址不正确,例如stackoverflow.com/questions/38716357/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多