リクエストを実行する必要がありますgetJSON()
が、認証とカスタム ヘッダーを渡すにはどうすればよいですか?
リクエスト ヘッダーが名前を取得しているが、値が取得されていないという問題が発生しています。URL は、GET/Url ではなくオプションとして挿入されるように、Fiddler の手動リクエストを通じて表示されています。
これは、Fiddler で正常に動作する、私たちが実行しようとしていることの例です。これを AJAX 関数で再現するにはどうすればよいでしょうか?
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
リクエスト ヘッダーを介した Fiddler 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
ベストアンサー1
リクエスト ヘッダーを渡すには $.ajax 関数を使用する必要があるという sunetos の意見に同意します。そのためには、$.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 オプションにインラインで記述することもできますが、私はそれを呼び出したいと考えました。
お役に立てれば!