我正在将Play 2与Java配合使用,并且我的一种控制器方法返回了redirect
:
return redirect(<some other domain>);
客户端调用是从角度控制器通过$http
进行的:
$http.get("/signin").
...
这不起作用; Firefox告诉我启用CORS。因此,我尝试根据此StackOverflow question的答案建议启用CORS。但是我仍然遇到同样的错误。但是,该答案似乎针对JSON响应。我需要对重定向进行其他操作吗?
我原以为将Access-Control-Allow-Origin
设置为*
可以解决问题,但这似乎不起作用。
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>