jQueryのgetJSON()メソッドでリクエストヘッダを渡すにはどうすればよいですか?
2023-08-23 20:45:40
質問
私は
getJSON()
リクエストを行う必要がありますが、どのように認証とカスタムヘッダを渡せばよいのでしょうか?
私は、リクエストヘッダが名前を取るが、値を取らないという問題を得ています。 URLは、GET/Urlの代わりにオプションとして挿入されるために、fiddlerの手動リクエストを通して表示されています。
私たちが行おうとしていることのうち、fiddler でうまく動作するものの例です。
GET /Service.svc/logins/gdd53535342/houses/vxcbdfsdg/people/dsgsdggd?format=json HTTP/1.1
User-Agent: Fiddler
Authorization: Basic rgbg423535fa23y4436
X-PartnerKey: df3fgeg-g5g6-b55b-f3d2-dsgg353523
Host: 154.34.53.54:2757
JavaScriptのコードです。
xhr = new XMLHttpRequest();
$(document).ready(function() {
$.ajax({
url: 'http://localhost:437/service.svc/logins/jeffrey/house/fas6347/devices?format=json',
type: 'GET',
datatype: 'json',
success: function() { alert("Success"); },
error: function() { alert('Failed!'); },
beforeSend: setHeader
});
});
function setHeader(xhr) {
xhr.setRequestHeader('Authorization', 'Basic faskd52352rwfsdfs');
xhr.setRequestHeader('X-PartnerKey', '3252352-sdgds-sdgd-dsgs-sgs332fs3f');
}
Fiddlerの正常なリクエストヘッダです。
GET /service.svc/logins/jeffrey/house/fas6347/devices?format=json HTTP/1.1
User-Agent: Fiddler
Authorization: Basic faskd52352rwfsdfs
X-PartnerKey: 3252352-sdgds-sdgd-dsgs-sgs332fs3f
Host: localhost:437
フィドルスルー
Ajax()
リクエストヘッダを
OPTIONS service.svc/logins/jeffrey/house/fas6347/devices?format=json HTTP/1.1
Host: localhost:437
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Proxy-Connection: keep-alive
Origin: http://ipv4.fiddler:61975
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization,x-partnerkey
どのように解決するのですか?
私もsunetosさんと同意見で、リクエストヘッダを渡すためには$.ajax関数を使用する必要があります。 そのためには、$.ajax()のオプションの1つであるbeforeSendイベントハンドラ用の関数を書かなければなりません。 以下は、その方法についての簡単なサンプルです。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
url: 'service.svc/Request',
type: 'GET',
dataType: 'json',
success: function() { alert('hello!'); },
error: function() { alert('boo!'); },
beforeSend: setHeader
});
});
function setHeader(xhr) {
xhr.setRequestHeader('securityCode', 'Foo');
xhr.setRequestHeader('passkey', 'Bar');
}
</script>
</head>
<body>
<h1>Some Text</h1>
</body>
</html>
上記のコードを実行し、Fiddlerのようなツールでトラフィックを観察すると、2つのリクエストヘッダが渡されるのがわかります。
- 値が Foo である securityCode
- 値がBarのパスキー
setHeader関数は、$.ajaxオプションのインラインでも可能ですが、私はそれを呼び出したかったのです。
これが役立つことを願っています。
関連
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] jQueryでページを更新するにはどうすればよいですか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] jQueryで複数のクラスを持つ要素を選択するにはどうすればよいですか?
-
[解決済み] jQueryで名前を指定して要素を選択するには?
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] jQuery.ajaxでmultipart/formdataを送信する。
-
[解決済み] アクセスコントロールリクエストヘッダは、jQueryでAJAXリクエストのヘッダに追加されます。
-
[解決済み] FirefoxでjQuery $.ajax(), $.post がREQUEST_METHODとして "OPTIONS "を送信する問題
-
[解決済み】jQueryでRSSをパースする。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Uncaught TypeError: 未定義のプロパティ 'length' を読み取れませんでした。
-
[解決済み] jQuery select onChangeの値を取得する。
-
[解決済み] 複数のクラスを削除する(jQuery)
-
[解決済み] jQueryでチェックボックスの値を取得する
-
[解決済み] jQuery.ajaxでmultipart/formdataを送信する。
-
[解決済み] Twitter Bootstrapのモーダルウィンドウを閉じないようにする
-
[解決済み] チェックボックスがチェックされた場合のjQuery
-
[解決済み] jQueryで5秒待つには?
-
[解決済み] jQueryのn番目の要素を取得する方法
-
[解決済み】$(window).width()がメディアクエリとは違う