jQuery AJAX GET 호출에서 요청 헤더 전달


242

jQuery를 사용하여 AJAX GET에서 요청 헤더를 전달하려고합니다. 다음 블록에서 "data"는 쿼리 문자열의 값을 자동으로 전달합니다. 대신 요청 헤더에 해당 데이터를 전달하는 방법이 있습니까?

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         data: { signature: authHeader },
         type: "GET",
         success: function() { alert('Success!' + authHeader); }
      });

다음은 작동하지 않았습니다.

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         beforeSend: { signature: authHeader },
         async: false,                    
         type: "GET",
                    success: function() { alert('Success!' + authHeader); }
      });

답변:


289

사용 beforeSend:

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         data: { signature: authHeader },
         type: "GET",
         beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');},
         success: function() { alert('Success!' + authHeader); }
      });

http://api.jquery.com/jQuery.ajax/

http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method


4
나는 이것이 지금까지 오래된 것이라고 알고 있습니다. 하지만 다음에 쉼표가 있어야한다고 덧붙이고 싶었습니다. beforeSend : function (xhr) {xhr.setRequestHeader ( 'X-Test-Header', 'test-value');}
matthew_360

beforeSend : function (xhr) {xhr.setRequestHeader ( 'X-Test-Header', 'test-value');}는 크롬과 파이어 폭스에서는 잘 작동하지만 IE8에서는 작동하지 않습니다. X-Test-Header 전송이 없습니다. 고치는 방법? Thx
1940268

시도했지만 "jquery-1.11.1.min.js"를 사용하여 헤더 세부 정보를 전달할 때 오류가 발생합니다.
Ghanshyam Baravaliya

4
, 답변을 아래에 더 많은 관련 참조
thedanotto

내가 추가 무엇을하려는 경우 X-Test-HeaderX-Test-Header받는 사람 beforeSend?
Si8

394

jQuery 1.5부터 headers다음과 같이 전달할 수 있는 해시가 있습니다.

$.ajax({
    url: "/test",
    headers: {"X-Test-Header": "test-value"}
});

에서 http://api.jquery.com/jQuery.ajax :

헤더 (1.5 추가) : 요청과 함께 전송할 추가 헤더 키 / 값 쌍의 맵입니다. 이 설정은 beforeSend 함수가 호출되기 전에 설정됩니다. 따라서 헤더 설정의 모든 값을 beforeSend 함수 내에서 덮어 쓸 수 있습니다.


6
전 세계적으로 설정할 수 있습니까?
여행

77
예 :$.ajaxSetup({headers: {"X-Test-Header": "test-value"}})
Lukas

6
jQuery 문서는 더 이상 $ .ajaxSetup () 사용을 권장하지 않습니다 ( api.jquery.com/jQuery.ajaxSetup )
Glen Selle

2
@Glen 그 이유는 플러그인이 기본 설정이 작동하기를 기대할 수 있다는 것입니다. 개인적으로, 전 세계적으로 무언가를 변경하면 기본 설정에 따른 것이 작동하지 않을 수 있다고 생각합니다.
MiniRagnarok

1
@Trip 전 세계에 대한 나의 추천 ... $ .ajax ()를 호출하는 대신 아약스 호출 (추상)에 대한 나만의 래퍼를 작성하십시오.
Erik Philips

45

$.ajax({
            url: URL,
            type: 'GET',
            dataType: 'json',
            headers: {
                'header1': 'value1',
                'header2': 'value2'
            },
            contentType: 'application/json; charset=utf-8',
            success: function (result) {
               // CallBack(result);
            },
            error: function (error) {
                
            }
        });


주어진 헤더를 찾을 수 없으므로 헤더 HttpRequestMessage r = new HttpRequestMessage(); int mylogonID = Convert.ToInt32(r.Headers.GetValues("logonID"));오류 에서 추출하려고 할 때 jQuery 1.7.2, C # API 2.x를 사용 합니다. r.Headers가 비어 있기 때문입니다.
Jeb50

다음과 같은 것을 시도해 볼 수 있습니다-string [] ids = System.Web.HttpContext.Current.Request.Headers [ "logonID"]. Split ( ',');
매니아
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.