Play框架:重定向到其他域

问题描述 投票:0回答:1

我正在将Play 2与Java配合使用,并且我的一种控制器方法返回了redirect

return redirect(<some other domain>);

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

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

这不起作用; Firefox告诉我启用CORS。因此,我尝试根据此StackOverflow question的答案建议启用CORS。但是我仍然遇到同样的错误。但是,该答案似乎针对JSON响应。我需要对重定向进行其他操作吗?

我原以为将Access-Control-Allow-Origin设置为*可以解决问题,但这似乎不起作用。

java redirect cors playframework-2.0
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.