2012-03-22 3 views
10

을 보낼 때 나는 CORS 요청을하려면 jQuery의 아약스 전화를 사용하고 있는데 그 내가jQuery를 CORS 요청은 범위 요청

var headers = {}; 

를 설정하면 작동하지만 내가 얻으려고 내용 때문에 오히려 큰 작동하지 , 나는 범위 헤더를 보내고 싶다.

(모든 테스트와 같은 도메인에 노력하고 있습니다)

내가이 수행 할 때 그래서

: 우리의 다른 도메인에

var headers = {"Range":"bytes=" + start + "-" + end}; 


$.ajax({ 
    url:url, 
    type:type, 
    headers:headers, 
    dataType:dataType, 
    success:function (data, status, jqXHR) { 

     // 

    }, error:function (data, status, jqXHR) { 

     // 
    } 
}); 

을 요청 최신 크롬 취소됩니다 및 FF.

헤더를 끄면 모든 것이 작동하지만 그 후에는 메가 바이트의 데이터가 나오고 브라우저는 해당 데이터 양을 처리/구문 분석 할 수 없습니다.

다음은 서버에서 헤더입니다 (내가이를 제어, 그래서 그것을 편집 할 수 있습니다)

Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: OPTIONS, GET, POST 
Access-Control-Allow-Headers: Content-Type, Authorization, Accept, Range, Origin 
Access-Control-Expose-Headers: Content-Range 
Access-Control-Max-Age: 3600 

내가 뭔가 잘못, 또는 CORS를 통해 범위의 요청을 보내는 짓을 한거야 아직 최신 브라우저에서 제대로 구현되지 않는 이유는 무엇입니까?

(측면 노트, 또한 크롬 헤더를 반환하지 않습니다 파일 크기를 알아 내가 그들에 노출-헤더를 허용하지만 크롬 메일 링리스트에 버그가 알려져 있지만 내가 첫 번째 GET 요청을 할 수없는 경우에도)
+1

'*'대신'Access-Control-Allow-Origin'을 요청한 실제 도메인을 반환하도록 서버의 헤더를 설정하려 했습니까? –

+0

예, 변경 사항 없음 – kodisha

+0

은 (는) 요청하신 교차 도메인 URL입니다. –

답변

9

마지막 프로젝트에서 작업하는 동안 비슷한 문제가있었습니다. 헤더를

 
Access-Control-Allow-Origin: * 

를 서버 핸들 POST 방식에)

 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: POST, OPTIONS 
Access-Control-Max-Age: 1000 
Access-Control-Allow-Headers: Origin, Content-Type, Accept 

2 및 추가

는 서버 측 핸들 옵션에

1)과 같은 액세스 제어 헤더를 반환 요청 : 여기 내가 무슨 짓을 3) in javascript :

 
jQuery.ajax({ 
     url: gate, 
     type: "POST", 
     data: JSON.stringify(post_data), 
     contentType: "application/json; charset=UTF-8", 
     crossDomain: true, 
     success: function(data){ 
      // 
     }, 
    }); 

희망 하시겠습니까?