source

교차 도메인 AJAX가 X-Requested-With 헤더를 전송하지 않음

ittop 2023. 3. 23. 23:09
반응형

교차 도메인 AJAX가 X-Requested-With 헤더를 전송하지 않음

http://www.a.com/service.asmx에서 웹 서비스를 만들고 http://www.b.com에서 도메인 간 에이잭스 요청을 전송합니다.Firebug, Live HTTP Headers 또는 원하는 다른 플러그인의 헤더를 확인합니다.

요청 헤더 간에 X-Requested-With HTTP Header 필드의 트레이스는 없습니다.

다만, 같은 도메인으로부터 같은 서비스에 Ajax 요구를 송신하면(예를 들면, http://www.a.com/about),), 그 헤더필드가 표시됩니다.

크로스 도메인 Ajax 요청의 경우 X-Requested-With 헤더필드가 생략되는 이유는 무엇입니까?

업데이트: JSONP 콜은 본질적으로 AJAX 콜이 아닙니다.따라서 JSONP 콜에는 X-Requested-With 헤더필드는 표시되지 않습니다.

jQuery를 사용하여 ajax 요청을 수행하는 경우 교차 도메인이기 때문에 X-Requested-With(HTTP_X_REQUESTED_WITH) = XMLHtpRequest 헤더를 전송하지 않습니다.단, 이 문제를 해결하고 헤더를 송신하는 방법에는 다음 2가지가 있습니다.

옵션 1) Ajax 콜의 헤더를 수동으로 설정합니다.

$.ajax({
     url: "http://your-url...",
 headers: {'X-Requested-With': 'XMLHttpRequest'}
});  

옵션 2) jQuery가 도메인 간 기본값을 사용하지 않도록 지시하여 Ajax 요청에서 X-Requested-With 헤더를 유지합니다.

$.ajax({
  url: "http://your-url...",
 crossDomain: false
});

단, 이 경우 서버는 이러한 헤더를 허용해야 합니다.그 후 서버는 이러한 헤더를 인쇄해야 합니다.

print "Access-Control-Allow-Origin: *\n";
print "Access-Control-Allow-Headers: X-Requested-With, Content-Type\n";

위의 첫 번째 행은 "Origin is not allow by Access-Control-Allow-Origin" 오류를 방지합니다.
두 번째 줄에서는 "Request header field X-Requested-With is not allow-Headers" 오류가 발생하지 않습니다.

언급URL : https://stackoverflow.com/questions/8163703/cross-domain-ajax-doesnt-send-x-requested-with-header

반응형