【问题标题】:How to configure aurelia-fetch-client withBaseUrl in CORS scenario?如何在 CORS 场景中使用 BaseUrl 配置 aurelia-fetch-client?
【发布时间】:2018-06-17 09:42:21
【问题描述】:

我正在 http://localhost:8080 上运行 REST 服务器,我的 Aurelia 应用程序在 http://localhost:9000 上运行,并希望使用 aurelia-fetch-client 访问服务器。我已经在 URL 上失败了:由于我不明白的原因,Aurelia host:port 组合得到了前缀。请求的 URL 原来是:

http://localhost:9000/localhost:8080/restapi/v1/things

但显然我想要:

http://localhost:8080/restapi/v1/things

配置:

let httpClient = new HttpClient();
httpClient.configure(config => {
  config
    .withBaseUrl('http:/localhost:8080/restapi/v1/')
    .withDefaults({
      credentials: 'omit',
      mode: 'cors',
    });
});

呼叫:

return httpClient
  .fetch('things', {
    method: 'get'
  })
...

我预计会遇到各种 CORS 问题,但我什至无法正确获取 URL,这有点令人失望 :-)

有人看到我做错了吗?

理想情况下,我想完全绕过 CORS,即不必为 CORS 启用 REST 服务器。但在这一点上,如果 URL 正确,我已经很高兴了。

【问题讨论】:

  • 我最初的直觉只是一个小错字:.withBaseUrl('http:/localhost:8080/restapi/v1/')... 必须是http://
  • 天啊!!!!谢谢尼克!我在代码中的某个地方(不仅仅是在帖子中)搞砸了。这确实会导致 Aurelia 库在(非)URL 前面加上 Aurelia 应用程序的 host:port 组合。奇怪的效果。随意写一个回复,我会接受的。
  • 没问题,当我们盯着代码看几个小时时,这正是我们所有人所怀念的。祝 CORS 问题好运;我的直觉是你不会绕过 CORS,除非捆绑你的 Aurelia 应用程序并从你的 REST 服务器提供它是可以接受的,因此将它放在同一个端口上。

标签: cors aurelia fetch-api aurelia-fetch-client


【解决方案1】:

正如我们的评论线程中所讨论的,有一个小错字(http: 后面缺少一个/)导致 URL 格式错误。

withBaseUrl('http://localhost:8080/restapi/v1/')

【讨论】:

  • 再次感谢!是的,我已经在两台服务器的测试设置中得到了我的“不透明”CORS 响应 :-)
猜你喜欢
  • 2017-12-17
  • 2016-03-12
  • 2018-03-11
  • 1970-01-01
  • 2017-01-11
  • 2019-12-07
  • 2017-12-24
  • 2016-10-22
  • 2023-03-20
相关资源
最近更新 更多