【发布时间】:2015-11-05 15:59:07
【问题描述】:
我有一个提供 JSON/HTTP API 的 java play framework 2.4.x Web 应用程序。当我运行我的前端 HTML/JS file:///Users/nize/tmp/index.html 在 http://localhost:9000 上调用 API 时,chrome 显示
XMLHttpRequest cannot load http://localhost:9000.
No 'Access-Control-Allow-Origin' header is present
on the requested resource. Origin 'null' is therefore
not allowed access. The response had HTTP status code 403.
我已按照Play Framework 2.4.x CORS Documentation 中的说明配置了网络应用程序:
- 更新为
build.sbt - 将类
Filters.java添加到项目的根目录(也尝试过/app) - 在
application.conf中添加了以下节:play.filters.cors { allowedOrigins = ["*","http://localhost"] #allowedHttpMethods = ["GET", "POST"] #allowedHttpHeaders = ["Accept"] #preflightMaxAge = 3 days }
我错过了什么?
编辑: 症状看起来与Other very similar stackoverflow post 相同或相似。该问题通过重新配置安装在计算机上的 Cisco AnyConnect VPN 得到解决。但是,我没有安装该软件。
【问题讨论】:
-
在我查看下面的答案之前,您的问题已经帮助了我。我只实现了文档中说明的最后一部分(在
application.conf中配置 CORS 过滤器),缺少前两个(更新build.sbt并添加Filters.java)。所以我一直在玩游戏,直到我偶然发现你的问题总结了我从官方文档中遗漏的步骤,以及下面的 Radium 答案,链接到reference.conf。顺便说一句,我使用的是 Firefox,并且在 Chrome 上也成功测试过,所以这对我来说不是 Chrome 特有的问题,甚至不应该是。 -
@nize 你能解决这个问题吗?我有完全相同的问题。我还定义了一个控制器方法来处理 OPTIONS 请求,但无济于事。我总是使用 Ajax 和 Postman 得到 403
标签: java playframework cors playframework-2.4