2017-09-08 22 views
4

좀 API를 사용하고, 나는 응답에서 나는이 가지고있는 것으로 나타났습니다 :jQuery를 아약스 액세스 사용자 정의 응답 헤더

Chrome Console Screen

나는 "X-DL-단위 -을 읽을 필요 것 왼쪽 "이지만 null이됩니다.

$.ajax(ajaxConfig).done(function(response, textStatus, xhr){ 
    var left = xhr.getResponseHeader("x-dl-units-left"); //null 
    var all = xhr.getAllResponseHeaders(); // "content-type: application/json;charset=UTF-8" 
}); 

왜 그런지 알고있는 사람 ?? 요청이 CORS를 사용하고 있기 때문에 :(

따라서 명시 적으로 사용자 정의 헤더가 수신자에게 노출 될 수 있도록해야합니다. 문제는 당신에게

+1

들으 사 로리 :) 내가 Ctrl 키를 + K를 누르면 깜빡 편집 : 더 나은 초기화를 들어 D –

+0

[이 대답은] (https://stackoverflow.com/a/15444439/1848744) 설명 할 것 문제는 아주 잘. –

답변

5

감사합니다.이를 위해이 응답에 Acccess-Control-Expose-Headers 헤더를 추가, 예를 들어, :. 서버의 제어가없는 경우이 응답을 생성하는 서버에서 수행해야한다는

Acccess-Control-Expose-Headers: x-dl-units-left, x-dl-units, [other headers as needed...] 

주, 당신은이 변경을 할 수 없습니다 당신은에서를 요청해야합니다. API 제공 업체

+0

실제로 API는 내 것이 아니므로 편집 할 수는 없지만 액세스 할 수없는 경우 브라우저에서 볼 수있는 이유는 무엇입니까 ?? –

+0

그리고 만약 내가 PHP 컬이있어? –

+1

그것에 대해 메모를 추가했습니다. 헤더를 추가하도록 API 제공 업체에 요청해야합니다. 헤더를 추가하지 않고 CORS를 사용 설정하면 맞춤 헤더가 노출되는 경우가 다소 있습니다. 아마 그냥 감시. 브라우저는 모든 것을 볼 수 있습니다. JS는 동일한 원산지 정책 때문에이 경우에 사용할 수 없습니다 –

0

액세스 지정자에 대한 언급이 없으므로 저장소가 있지만 알 수없는 곳이 있습니다. 이제 먼저 초기화해야합니다.

Acccess-Control-Expose-Headers: x-dl-units-left; 
$.ajax(ajaxConfig).done(function(response, textStatus, xhr){ 

    var all = xhr.getAllResponseHeaders(); 
// "content-type: application/json;charset=UTF-8" 

}); 
+0

나는이 것을 시도 할 것이다. –

+0

이 정보를 사용하는 방법을 모르겠다. –

+0

당신은 선언하고 당신의 기능 바깥에서 가치를 얻을 필요가있다. –