播放框架:重定向到另一个域



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

return redirect(<some other domain>);

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

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

这不起作用;Firefox告诉我启用CORS。因此,我试图按照StackOverflow问题的答案所建议的那样启用CORS。但我还是犯了同样的错误。然而,这个答案似乎指向JSON响应。我需要为重定向做任何不同的操作吗?

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

Http 3xx重定向响应对AJAX调用是透明的。这个问题的一个可能的解决方案是返回可以通过AJAX解决的303以外的东西。例如,您可以假设来自代码为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>

最新更新