【发布时间】:2014-03-14 20:04:05
【问题描述】:
我到处寻找,但我创建的所有解决方案都对我不起作用,我认为问题出在我的游戏版本中,但无论如何,有人可以帮助我在 Java 中实现一个 CORS 过滤器玩 2.2.0+。对不起我的英语,我不太确定它是否清楚。
我实现了这段代码:
public class CorsComposition {
/**
* Wraps the annotated action in an <code>CorsAction</code>.
*/
@With(CorsAction.class)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Cors {
String value() default "*";
}
public static class CorsAction extends Action<Cors> {
@Override
public Promise<SimpleResult> call(Context context) throws Throwable {
Response response = context.response();
response.setHeader("Access-Control-Allow-Origin", "*");
//Handle preflight requests
if(context.request().method().equals("POST")) {
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, X-Auth-Token");
response.setHeader("Access-Control-Allow-Credentials", "true");
return delegate.call(context);
}
response.setHeader("Access-Control-Allow-Headers","X-Requested-With, Content-Type, X-Auth-Token");
return delegate.call(context);
}
}
}
在我的控制器中,我添加了注解 @Cors。这对请求没问题,但是当我使用 POST 时,它不起作用。我的 Chrome 控制台上显示了 CROSS ORIGIN NOT ALLOWED 的错误。
【问题讨论】:
-
请告诉我们你到目前为止做了什么。如果没有您的帮助,StackOverflow 无法为您提供完成的实现。你到底是哪里出了问题?
-
抱歉,问题已编辑
-
问题解决了,实际上,问题是方法的返回没有返回,因为绑定错误停止了方法。所以这段代码适用于 CORS 问题,所以任何人都可以使用它。
-
为您自己的问题放置一个答案,并在两天后将其标记为正确,而不是在问题标题中放置 SOLVED
标签: java playframework cors