によって行うことができクロスドメインの要求をJavascriptの設定のカスタムヘッダ?
-
28-09-2019 - |
質問
て応募することはできませんのカスタムヘッダJSONP話, どのようにしてクロスドメインの要望に応カスタムヘッダのjQueryを使う?
私は基本的にアクセスしようとしているgoogleドキュメントとjQueryや合格する必要があり認証トークン:
var token = "my-auth-token";
$.ajax({
url: "http://docs.google.com/feeds/documents/private/full?max-results=1&alt=json",
dataType: 'json',
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "GoogleLogin auth=" + token);
},
success: function(data, textStatus, XMLHttpRequest) {
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
}
});
注意:これらは 完全に バイパスのアプリケーション層.中でrubyの使用に接続するGoogleのデータをAPIがかなり多くの資源フィードの構文解析時にサーバ側です。
解決
利用できるGoogleのJavaScriptライブラリへのクエリーのドキュメントAPIに含まれています。がなくヘルパーのためのDocs具体的には、今でも現役で使うことができほとんどのApiを含むDocsに入ります。この ブログ によるGoogleの社員として働きます。
場合に無限ループの権限をこちらをご覧ください 関連する質問 からGoogleます。基本的に、クッキーになっ設定速度で、そのJavaScriptライブラリとチェックできるようにするためのlibsoupおよんでリダイレクト、OAuth認証ページです。解決策は、いずれかの追加の小さな遅れ以前のチェックが行われ、またはログインボタンを始め、認証の代わりに、そのページです。
いものを追加する必要があるは、イメージをページに存在する同一ます。できる隠れたCSSと、DOM.
使用例の上記のブログで取得私の書類リストでは、JavaScriptます。この初期化関数を使ってく無限の承認のループ:
function initialize() {
var scope = 'http://docs.google.com/feeds/';
if (google.accounts.user.checkLogin(scope)) {
var service = new google.gdata.client.GoogleService('writely', 'DocList-App-v1.0');
service.getFeed(scope + 'documents/private/full/', handleFeed, handleError);
} else {
var loginButton = $("<button>Click here to login</button>");
loginButton.click(function() {
var token = google.accounts.user.login(scope); // can ignore returned token
});
$("body").append(loginButton);
}
};
他のヒント
プロキシのために再生されるサーバー側にコードを書くことを検討し、jQueryにそれを呼び出すようにします。
- PHPを使用している場合は、使用してください
curl
. - Javaを使用している場合は、使用してください
URLConnection
またはより便利なほど apache httpclient. - C#/。ネットを使用している場合は、使用してください
WebClient
. - Rubyを使用している場合は、使用してください
Net::HTTP
.
外部ドメインが適切なものを送信して許可する限り、 Access-Control-Allow-Origin
ヘッダ。次に、を使用します XMLHttpRequest
標準のクロスドメインXHR APIをサポートするブラウザのAPIおよび XDomainRequest
IEで。