我尝试在我的 java play 应用程序上启用 CORS 过滤器。我正在使用 angularjs 访问 localhost 来获取一些数据。这是我在 play 应用程序方面所做的,
application.conf
play.http.filters = "com.de.filters.Filters"
play.filters.cors {
allowedOrigins = null
allowedHttpMethods = ["GET", "POST"]
allowedHttpHeaders = ["Accept"]
preflightMaxAge = 3 days
}
Filters.java
public class Filters implements HttpFilters {
@Inject
CORSFilter corsFilter;
public EssentialFilter[] filters() {
return new EssentialFilter[]{corsFilter};
}
}
当我试图调用我的服务时,它给我一个错误,
XMLHttpRequest cannot load http://localhost:9000/app/search/0/10. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. The response had HTTP status code 403.
我该如何解决这个问题?
最佳答案
来自Play 2.3 Documentation ,
首先将过滤器添加到 build.sbt
的 libraryDependencies
列表中,如下所述。
libraryDependencies += filters
然后,在application.conf
中,不要将play.filters.cors.allowedOrigins
设置为[null]
,它默认到“允许所有来源”。设置有效的域列表或忽略它。不要忘记引用您的过滤器:
play.http.filters = "filters.Filters"
最后,在您的 Filters.filter()
方法中,如下所示,指定 asJava()
方法,如文档中所述。
public EssentialFilter[] filters() {
return new EssentialFilter[] {
corsFilter.asJava()
};
}
关于java - 在 Java play 应用程序中启用 CORS 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36851103/