播放框架:重定向到不同的域

时间:2014-09-09 11:59:22

标签: java redirect playframework-2.0 cors

我正在使用Play 2和Java,我的一个控制器方法返回redirect

return redirect(<some other domain>);

客户端调用从角度控制器通过$http发生:

$http.get("/signin").
    ...

这不起作用; Firefox告诉我启用CORS。所以我尝试按照StackOverflow question的答案建议启用CORS。但我仍然得到同样的错误。然而,答案似乎是针对JSON响应。我是否需要为重定向做任何不同的事情?

我原本以为将Access-Control-Allow-Origin设置为*就行了,但这似乎不起作用。

1 个答案:

答案 0 :(得分:1)

Http 3xx重定向响应对AJAX调用是透明的。这个问题的一个可能的解决方案是返回除了303以外的其他东西,可以通过AJAX解决。例如,您可以假设代码为280的应用程序的所有响应都用于AJAX重定向。然后你的控制器看起来像这样:

public class Application extends Controller {

    public static Result signin() {
        // ...
        return status(280, "https://api.twitter.com/oauth/authenticate?oauth_token=" + requestToken.getToken());
    }

}

在客户端,您可以检查结果状态代码并对代码280做出反应。下面是一个带有页面重定向的简单示例,但您可以使用该响应执行任何操作。

<script>
    $(function() {
        $.ajax({'url': '/signin', statusCode: {
            280: function(response) {
                window.location = response;
            }
        }});
    });
</script>