我正在使用Play 2和Java,我的一个控制器方法返回redirect
:
return redirect(<some other domain>);
客户端调用从角度控制器通过$http
发生:
$http.get("/signin").
...
这不起作用; Firefox告诉我启用CORS。所以我尝试按照StackOverflow question的答案建议启用CORS。但我仍然得到同样的错误。然而,答案似乎是针对JSON响应。我是否需要为重定向做任何不同的事情?
我原本以为将Access-Control-Allow-Origin
设置为*
就行了,但这似乎不起作用。
答案 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>