【发布时间】: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