我正在Play Framework 2.5(Java)后端开发一个Angular 2应用程序.如果我通过浏览器URL访问我的端点,它们可以正常工作.但是,从Angular 2应用程序调用它会显示错误:
XMLHttpRequest无法加载localhost:9000/app/myendpoint.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许原点'localhost:3000'访问.响应的HTTP状态代码为500.
我试着按照文档创建过滤器:
在application.conf中:
play.filters {
cors {
pathPrefixes = ["/app"]
allowedOrigins = null
allowedHttpMethods = null
}
Run Code Online (Sandbox Code Playgroud)
过滤:
import play.mvc.*;
import play.api.http.DefaultHttpFilters; <- error with this import
import play.filters.cors.CORSFilter;
public class Filters extends DefaultHttpFilters {
@Inject public Filters(CORSFilter corsFilter) {
super(corsFilter);
}
}
Run Code Online (Sandbox Code Playgroud)
在build.sbt中:
libraryDependencies ++= Seq(
...,
filters
)
Run Code Online (Sandbox Code Playgroud)
有谁知道真正的解决方案?谢谢 :)
工作代码:
Filters.java(在项目的根目录下)
import com.google.inject.Inject;
import com.google.inject.Singleton;
import play.http.HttpFilters;
import play.mvc.EssentialAction;
import play.mvc.EssentialFilter;
import play.filters.cors.CORSFilter;
@Singleton
public class Filters extends EssentialFilter implements …
Run Code Online (Sandbox Code Playgroud)