2014-09-09 3 views
0

Я использую Play 2 с Java и один из моих методов контроллера возвращает redirect:рамки воспроизведения: перенаправление на другой домен

return redirect(<some other domain>); 

Клиентская вызов происходит от углового контроллера через $http:

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

Это не работает; Firefox сообщает мне включить CORS. Поэтому я попытался включить CORS, как было предложено в ответах на этот вопрос StackOverflow question. Но я все равно получаю ту же ошибку. Однако этот ответ, похоже, направлен на ответы JSON. Нужно ли мне делать что-то другое для перенаправления?

Я бы подумал, что настройка Access-Control-Allow-Origin на * будет делать трюк, но это не работает.

+0

Не могли бы вы рассказать что-то еще о том, как вы выполняете это перенаправление? CORS связан с AJAX. Простое перенаправление должно работать нормально с обычным HTTP-вызовом. –

+0

Метод контроллера выдает этот вызов: 'return redirect (« https://api.twitter.com/oauth/authenticate?oauth_token= »+ requestToken.getToken());' –

+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> 
Смежные вопросы