Redirect issue from localhost using Play Framework & Angularjs
我在我的应用程序中使用Play Framework和Angularjs。 我的要求是根据在UI上选择的一些参数重定向Play框架页面。
这是我的代码,
在页面上我打开了bootstrap模态对话框,并在提交动作上调用angular post方法,
1 2 3 4 5 6 7 8 9 10 11 12 | $scope.loginToExt = function() { var data = $scope.env; $http.post('/login', {env: data}) .success(function(data){ //$scope.env = data }) .error(function(data){ console.log(data) }); }; |
一旦我点击提交我的模态,它将调用'/ login'并根据我的路由映射将调用action方法如下,
1 2 3 4 5 6 7 8 9 |
路由文件如下,
1 | POST /login controllers.Application.login |
我不知道问题是什么,但我收到如下错误,无法重定向我的页面。
XMLHttpRequest cannot load https://google.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access.
我相信你遇到的问题是因为你试图在ajax($ http.post)调用中重定向,请看这篇文章:
Your server side code cannot redirect the browser from an ajax
response.
使用$ http.post和res.redirect而不解析promise
也可以看看:
处理Angular POST的快速重定向
不要尝试从Play重定向,而是考虑使用重定向的url返回响应,然后在成功回调中,从那里重定向:
1 | $window.location.href="https://google.com"; |
(记得注入$ window)
通过观察
https://gist.github.com/mitchwongho/78cf2ae0276847c9d332,
您必须在Global.scala文件中的HeaderNames.ACCESS_CONTROL_ALLOW_HEADERS中添加"access-control-allow-origin"。