2012-09-28 3 views
0

내가 PUT 요청을 받아들이는 더미 장고보기했습니다 : 내가보기에 PUT XHR 호출을 할 때, 이제PUT 403이 Aborted로 나타나는 이유는 무엇입니까?

# urls.py 
url(r'^put/.*$', 'put', name='put'), 

# views.py 
def put(request): 
    print request.method 
    return HttpResponse() 

를, 그것은 403 반환

[27/2,012 22시 32분 43초] "PUT/넣어/X-비 전환/e02ed7da08d411e2bfa974de2b4d1b84? PARTNUMBER = 115 = & uploadId 35UxOsGCCG98rke3VjpazmCy.0ZFpesndJ.XPp5Bw6R2CumfIsYKP5DlBYPY3gh3I0PCwfCg4DqSRttYp75bZg-- HTTP/1.1"403 156,400

/9월

(340을 반환합니까, 지금은 상관 없습니다). 진짜 문제는 이것이다 :

enter image description here

XHR 호출은 실제 응답 (156400 콘텐츠 길이를 알) 콘텐츠로, 403 경우에도, 상태 0 (중단?!) 반환합니다.

왜 403 응답을 표시하지 않습니까?

EDIT 다음 PUT 요청과 같이 이루어진다 :

var xhr = new XMLHttpRequest(); 
var path = "/" + u.settings.key; 
path += "?partNumber=" + (chunk + 1) + "&uploadId=" + u.upload_id; 

var method = "PUT"; 
var authorization = "AWS " + u.settings.access_key + ":" + signature; 
var blob = u.file.slice(start, end); // mozSlice/webkitSlice, depending on browser 
xhr.upload.addEventListener("progress", progress_handler); 
xhr.addEventListener("readystatechange", handler); 
xhr.addEventListener("error", error_handler); 
xhr.addEventListener("timeout", error_handler); 

xhr.open(method, /*u.settings.host*/ "http://localhost:8000/put" + path, true); 

xhr.setRequestHeader("x-amz-date", date); 
xhr.setRequestHeader("Authorization", authorization); 
xhr.setRequestHeader("Content-Type", u.settings.content_type); 
xhr.setRequestHeader("Content-Disposition", "attachment; filename=" + u.file.name); 

xhr.send(blob); 
+0

어떻게 PUT XHR 요청을 했습니까? –

+0

@ KayZhu 내 편집을 확인하십시오. 기본적으로 Amazon S3에 대한 PUT 요청이지만 django 개발 서버로 이동합니다. –

답변

0

내가 브라우저가 액세스 금지 수단 (403)을 수신 할 때 크로스 도메인 요청임을 가정하고 생각한다. 그것이 브라우저가 요청을 한 자바 스크립트 코드로 돌아가는 데이터를 처리하지 않는 이유입니다. 서버는 모든 응답에 대해 'Action-Control-Allow-Origin'헤더를 보내야합니다.