2012-05-24 2 views
1

내가 가지고 내가이 코드입니다 JSON
와 POST 요청을 할 노력하고있어 헤더에 문제가 :JQuery와 - 아약스 헤더 문제

$.ajax({ 
       type: "POST", 
       url: url, 
       data: jsonData, 
       dataType: 'json', 
       beforeSend: function(xhrObj){ 
        xhrObj.setRequestHeader("Content-Type","application/json"); 
        xhrObj.setRequestHeader("Accept","application/json"); 
       }, 
       error: function(){ 
        alert("Fail"); 
       }, 
       success: function(){ 
        alert("Success"); 
       } 
      }); 

그리고이 방화범에 의해 표시되는 요청 헤더입니다 .

OPTIONS /path HTTP/1.1 
Host: 192.168.15.109:8080 
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0 FirePHP/0.7.1 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
DNT: 1 
Connection: keep-alive 
Origin: http://localhost 
Access-Control-Request-Method: POST 
Access-Control-Request-Headers: content-type 
x-insight: activate 
Pragma: no-cache 
Cache-Control: no-cache 

그리고 응답 헤더 :

HTTP/1.1 204 No Content 
Date: Thu, 24 May 2012 19:17:01 GMT 
Allow: OPTIONS,POST 

당신이 볼 수 있듯이, 헤더는 사람 메신저 지정과 일치 나던,하지만 난이 헤더 컬 사용할 때 대신 것들이다 :

POST /path HTTP/1.1 
User-Agent: curl/7.25.0 (i386-pc-win32) libcurl/7.25.0 OpenSSL/0.9.8u zlib/1.2 

Host: localhost:8080 
Accept: */* 
Content-Type: application/json 
Content-Length: 5 

어떤 아이디어 나 해결책이 있습니까?

또한 Ajax에서 JSON으로 보낸 헤더의 기본값을 설정하기 위해 JQuery Source를 수정했지만 작동하지 않았습니다.

+0

beforeSend 함수 호출에서 xhrObj를 기록하면 콘솔에서 무엇을 얻게됩니까? console.log (xhrObj). 그 속성이 실제로 설정되었음을 보여 줍니까? – ariestav

+0

"Accept"를 명시 적으로 설정하려는 이유는 무엇입니까? Firefox의 "Accept"헤더에있는'*/*'는 어떤 형식으로도 응답을받을 수 있다고 말합니다. 참조 링크 - http://www.gethifi.com/blog/browser-rest-http-accept-headers –

+0

아마 당신의 문제가 서버가 구성된 방법 대신 올바른 헤더를 응답에 발행하지 않았을 수도 있습니다. – user17753

답변

1

실제로 도메인 간 문제 였기 때문에 URL을 IP로 정의했기 때문에 브라우저가 크로스 도메인 요청과 같이 해석했습니다.

모든 것에 감사드립니다.

1

같은 출처 정책 호와 같습니다. dataType='jsonp'을 사용하면 효과가 있지만 다른 변경이 필요할 수 있습니다.

자세한 내용은 https://developer.mozilla.org/en/http_access_control을 참조하십시오.

+0

해답을 주셔서 감사하지만 서버가 GET을 허용하지 않으므로 POST를 사용하여 JSONP를 사용하여이 작업을 수행 할 필요가 없습니다. –

+0

당신은 프록시를 사용할 수 있습니다 : http://developer.yahoo.com/javascript/howto-proxy.html – Stefan

+0

나는 그것의 CrossDomain 문제를 생각하지 않습니다. 모든 것은 같은 서버에서 실행됩니다. –