XSS/COR は Apache Web サーバーから許可されており、クエリ文字列パラメーターを使用して正常に呼び出しを行うことができます。
私が聞いたRESTfulサービスはOAuthを使用しています。
RESTful Web サービスへの呼び出しは、Composer を介して Fiddler で簡単に実行でき、有効な JSON データを返します。Authorization ヘッダーを 1 つ設定しましたが、Fiddler Composer で送信した場合と Ajax でヘッダーを設定した場合では、リクエストがまったく異なって見えます。
Accept および Access-Control-Allow-Origin ヘッダーの有無にかかわらず試してみました。
これは、Composer で要求を実行した後の Fiddler からの要求ヘッダーです。
GET {/trailing server URL} HTTP/1.1
Cookies / Login
Authorization: Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Transport
Host: {server URL}
これが私の Ajax リクエストです
$(function () {
var token = "Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
$.ajax({
url: url,
dataType: "json",
headers: {
"Access-Control-Allow-Origin": "*", Accept: "application/json", Authorization: token
}
//,
//beforeSend: function (jqXHR) {
//jqXHR.setRequestHeader("Access-Control-Allow-Origin", "*");
//jqXHR.setRequestHeader("Accept", "application/json");
//jqXHR.setRequestHeader("Authorization", token);
//}
})
.success(function (data) {
console.log("success");
})
.fail(function (jqxhr, textStatus, error) {
console.log("Error - textStatus = " + textStatus + " , error = " + error);
});
});
これは、私の Ajax ブラウザ リクエストから Fiddler を介してキャプチャされた HTTP リクエスト ヘッダーです。
OPTIONS {trailing server URL} HTTP/1.1
Client
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
Cookies / Login
DNT: 1
Miscellaneous
Access-Control-Request-Headers: access-control-allow-origin,authorization
Access-Control-Request-Method: GET
Origin: {local machine URL}
Transport
Connection: keep-alive
Host: {server URL}
Fiddler Composer ヘッダーのように、AJAX 要求ヘッダーに「GET」ではなく「OPTIONS」が表示されるのはなぜですか?
Fiddler Composer ヘッダーの Cookies / Login セクションに Authorization: Bearer xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 値が表示されるのはなぜですか?
トークンはブラウザーで表示できるため、JavaScript コードに保持するべきではないと聞いています (実際には、トークンはハードコーディングされず、変数として渡されます)。他にどのようにトークンを渡し、安全に保つことができますか?