2016-08-22 2 views
4

클라이언트 응용 프로그램이 Amazon API 게이트웨이 &에서 호스팅되는이 웹 응용 프로그램을 cloudefront 사이트에서 호스팅합니다. CORS를 사용하는 서비스입니다. HTTP 500, 401, 403과 같은 오류의 경우 status 속성을 사용하여 jqxhr 객체에서 http 상태를 수신 할 수 있습니다. 하지만 그것은 HTTP 상태 413에 대한 코드에서 상태 0이 표시되는 것 같습니다.CORS에 대한 http 상태 코드 413을 수신 할 수 없음

요청이 서버에서 이루어진 경우 http 상태 413을 수신 할 수 있음을 발견했습니다. 그러나 교차 도메인 아약스에 대해서만 상태 413이 상태 0으로 수신됩니다.

도메인 간 아약스 요청에 대해 http 상태 413을 처리 할 수있는 방법이 있습니까?

그냥 간결은, (401), HTTP 상태 500, 다음 코드 블록을 고려 오류 콜백 로그의 출력 (500) 또는 (401) 그러나 413에 대한 다음과 같은 http://jsfiddle.net/tqgv7z9c/1/ (노트에 http하지 참조 0

 $.ajax({ 
      url: 'URL to AWS API Gateway', 
      success: function(d){ 
       console.log(d); 
      }, 
      error: function(a){ 
       console.log(a.status); 
      } 
     }); 

답변

2

를 표시 HTTPS)

$.ajax({ 
    url: 'http://www.mocky.io/v2/57bb03fc100000460a585000', 
    error: function(a){ 
     $('#code').text(a.status); 
    } 
}); 

난 다음 설치를 http://www.mocky.io/를 사용하여 설정 :

  • 413 요청 엔티티가 너무 큼
  • CORS 헤더

당신은 볼 수 있습니다 GET 413 코드가 올바르게 반환됩니다.

응답에 대한 자세한 내용을 보지 않고 브라우저가 후속 조치를 취하고 있다고 생각하지만 304 Found 응답이 Location 헤더와 함께 다시 오면 문제가 있음을 알고 있습니다. 브라우저가 계속되기 전에 가로 챌 수 없게됩니다. 이것이 당신을 위해 일어나는 일이라면 API 자체를 수정할 수있는 능력이 없다면 할 수있는 일은 거의 없을 것입니다.

+0

API 게이트웨이에서 보낸 응답의 응답 헤더에 Access-Control-Allow-Origin이 없었습니다. 그래서 응답 본문이나 응답 상태에 액세스 할 수 없었습니다. 그래서 문제가 해결되었습니다. –