2012-09-27 4 views
0

데이터를 다른 도메인에 POST하고 작업에 의해 반환 된 확인 메시지를 수신하고 싶습니다.JQuery ajax OPTIONS 권한 요청이 작동하지 않습니다.

def options 
    headers['Access-Control-Allow-Origin'] = "*" 
    headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, OPTIONS' 
    headers['Access-Control-Max-Age'] = '100' 
    headers['Access-Control-Allow-Headers'] = '*, x-requested-with, content-type, accept, origin, referer, user-agent' 
    render :text => '', :content_type => 'text/plain' 
end 

내 JQuery와 아약스 요청 : 그래서 현재 다음과 같습니다 내 레일 컨트롤러에합니다 (POST와 같은 경로에) 옵션 HTTP 방식을 처리 할 수있는 옵션 작용을 가지고 일을 CORS를 얻을 수 다음과 같이 보입니다. (coffeescript)

$.ajax 
    type: 'POST' 
    url: 'http://my-other-domain.com/' 
    data: data 
    contentType: "application/json; charset=UTF-8" 
    crossDomain: true 
    success: (response) => 
    if response.data_saved 
     ... 
    error:() => ... 

...하지만 작동하지 않습니다.

옵션 요청 Access-Control-Allow-Origin:*를 반환 작동하는 것 같군 모두, 서버는 수신하고 게시 된 데이터를 처리하지만, 크롬은 여전히 ​​콘솔에

XMLHttpRequest cannot load http://my-other-domain.com/. Origin http://my-main-domain.com is not allowed by Access-Control-Allow-Origin. 

을 던져 오류 콜백을 발생합니다.

무엇이 누락 되었습니까?

답변

2

Access-Control-Allow-Origin: * 헤더가 포함되어야합니다에 .getJSON 방법을 사용하기 시작했다. POST 응답에 해당 헤더를 추가하면 문제가 해결됩니다.

은 (또한 '*'는 Access-Control-Allow-Headers에 유효한 값이 아닙니다 참고하지만, 다 치신 안)

+0

당신은 생명의 은인입니다! 내가 읽은 기사 중이 점을 분명하게 보이지는 않았다. – Nat

+0

다음은 각 CORS 헤더를 설정해야하는 순서도입니다. http://www.html5rocks.com/static/images/cors_server_flowchart.png – monsur

0

나는 PHP에서 교차 아약스 문제와 같은 문제가 있음을 기억하며, 헤더 ("...")로 해결했습니다. 그럼 난 그냥 프리 플라이트 옵션 응답에, 모든 응답에 jQuery를

관련 문제