【发布时间】:2018-10-17 05:35:48
【问题描述】:
我正在尝试将 GET 请求从我的前端发送到 API 应用程序。两者都在我的本地机器上运行。这就是它现在的构建方式:
backend <===> frontend <=x=> API application
这三个部分在各自的 docker 容器中相互独立运行,并且仅通过 HTTP 请求相互通信。
如上图所示,backend 和 frontend 之间的连接工作正常,但 frontend 和 API application 之间的连接不正常。
堆栈包括:
-
frontend: 带有 vue-js 的节点服务器和我使用 axios 的请求 -
API application:带有 Play Framework 2.5.14 的 Scala
当我像这样通过 curl 向她发送请求时,API 应用程序本身才能工作:
curl -X GET api-application.docker/api/user?userId=1 \
-H "Authorization: key" -H "Accept: Application/Json"
但是当我从前端调用它时,我在 OPTIONS 调用中得到 404。它还在 Firefox 中向我发出与 CORS 标头 Access-Control-Allow-Origin 相关的警告:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the
remote resource at http://api-application.docker:9000/api/user?userId=1
(Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
所以我先进入了api应用的application.conf并添加了
play.filters.cors {
allowedOrigins = ["*"]
}
我也尝试将星号换成http://frontend.docker:8080
这不起作用,所以我再次删除了该条目并添加了这一行:
play.filters.disabled += "play.filters.cors.CORSFilter"
仍然没有任何变化。现在我想知道我是否误解了 OPTIONS 和 CORS 之间的联系?还是我关错了?谁能帮帮我?
编辑: 我在等待答案时尝试了更多的东西,但都没有成功:
我将application.conf中的条目改为:
play.filters.cors {
allowedOrigins = null
}
【问题讨论】:
标签: vue.js playframework cors axios