Java와 함께 Play 2를 사용하고 있으며 컨트롤러 메서드 중 하나가 redirect
다음을 반환합니다 .
return redirect(<some other domain>);
클라이언트 측 호출은 각도 컨트롤러에서 $http
다음을 통해 발생합니다 .
$http.get("/signin").
...
이것은 작동하지 않습니다. Firefox는 CORS를 활성화하라고 알려줍니다. 그래서이 StackOverflow 질문에 대한 답변에서 제안한대로 CORS를 활성화하려고했습니다 . 하지만 여전히 같은 오류가 발생합니다. 그러나 그 대답은 JSON 응답으로 향하는 것 같습니다. 리디렉션을 위해 다른 작업을 수행해야합니까?
나는 설정 이 트릭 Access-Control-Allow-Origin
을 *
할 것이라고 생각했을 것입니다. 그러나 그것은 작동하지 않는 것 같습니다.
Http 3xx 리디렉션 응답은 AJAX 호출에 투명합니다. 이 문제에 대한 한 가지 가능한 해결책은 AJAX로 해결할 수있는 303이 아닌 다른 것을 반환하는 것입니다. 예를 들어 코드 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>
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다