2013-07-22 2 views
0

Javascript에서 xmlhttprequest를 사용하여 S3 버킷에 개체를 업로드하라는 PUT 요청을하고 있습니다. CORS가 올바르게 설정되었습니다. 이것은 내가 시도하고 코드입니다.PUT 요청에 대한 DOM 예외 19

 var bucketPath = 'http://<bucket-name>.s3.amazon.com/' 
     var fileName = <name> + ".json"; 
     var uploadPath = bucketPath + fileName.replace(/\s/g,"+"); 
     var xmlhttp; 
     if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest(); 
      } 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange=function() 
      { 
      if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
       showData(); 
      } 
      else{ 
       showError(); 
      } 
      }; 
     xmlhttp.open("PUT",uploadPath,false); 
     xmlhttp.send(JSON.stringify(jsonObject), replacer); 

마지막 코드 줄에 DOM 예외 19가 있습니다. 무엇이 잘못되었는지 확실하지 않습니다. 나는 샘플 테스트 스크립트로 똑같이 시도해 보았고 작동한다. 내 응용 프로그램에 사용하려고 할 때만이 예외가 throw됩니다.

은 크롬 디버거에서 네트워크 탭에서 필자는 옵션으로 방법과 HTTP 요청을 참조하고 출원 입력 할 수 있습니다.

전송중인 실제 PUT 요청을 볼 수 없습니다. 아무도 문제가 무엇이고 예외가 의미하는 바를 말할 수 있습니까?

업데이트 : 조심스럽게 요청을 찾고 후에는 jsfiddle 내 응용 프로그램에서 전송되는. JS Fiddle에서 프리 플라이트 HTTP OPTIONS 요청과 실제 PUT 요청을 보낸 2 개의 요청을 봅니다. 이 JS 바이올린에 큰 작동하지만

는 otherhand에 내 응용 프로그램에서 동일한 코드는 프리 플라이트 HTTP 옵션 요청 전송하지만, (200)는 다시 상태가 보류하지 않습니다. 그것이 실패하는 이유입니다.

나는 왜 HTTP OPTIONS 요청에 성공하지 못했는지 모든 아이디어가 있습니다.

+0

CORS가 사용되는 곳이 없습니다 ... – Ian

+0

나는 의미합니다. 이미 웹 사이트에서 PUT 요청을 허용하기 위해 S3 버킷에 대한 CORS 규칙을 설정했습니다. –

+0

하지만 브라우저는이를 알지 못합니다. 다음과 같은 것을 사용해야한다고 생각합니다. http://www.html5rocks.com/en/tutorials/cors/ – Ian

답변

0

그래, 알았어. CORS와는 아무 관련이 없습니다. PUT 요청을하려고하는 URL은 http://bucket-name.s3.amazon이어야합니다. aws .com/

관련 문제