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');}は、ChromeとFirefoxで適切に機能しますが、IE8では機能しません。X-Test-Header送信はありません。それを修正する方法?Thx
user1940268

試しましたが、「jquery-1.11.1.min.js」を使用してヘッダーの詳細を渡すと、エラーがスローされます
Ghanshyam Baravaliya

4
以下の回答を参照してください。より関連性があります
thedanotto

私は追加したい場合はどうX-Test-HeaderX-Test-HeaderbeforeSend
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
これはグローバルに設定できますか?
2013年

77
はい:$.ajaxSetup({headers: {"X-Test-Header": "test-value"}})
Lukas 2013年

6
jQueryのドキュメントは$ .ajaxSetup()もう(使用することはお勧めしませんapi.jquery.com/jQuery.ajaxSetup
グレンセラ

2
@Glen彼らの推論は、プラグインがデフォルト設定が機能することを期待しているかもしれないということです。個人的には、何かをグローバルに変更すると、デフォルトの設定に依存していたものが機能しなくなる可能性があるのは当然だと思います。
MiniRagnarok 2014年

1
@Tripグローバルでの私の推奨事項... $ .ajax()を呼び出す代わりに、ajax呼び出し(抽象化)の独自のラッパーを記述します。
エリックフィリップス

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 2017

次のようなものを試してみてください-string [] ids = System.Web.HttpContext.Current.Request.Headers ["logonID"]。Split( '、');
愛好家
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.