同じオリジンポリシーを迂回しようとしています(バックエンドサーバーがない - ウェブサイトのみで、GoogleドライブにJSスクリプトがホストされています)。私は誰かのために取り組んでいるプロジェクトにWhateverOriginを使用することに決めました。このWebサイトでAjaxを実行できないのはなぜですか?
今それはすべてのウェブサイト上で働いていますまで - それは404
、働いていないページとの比較のためにmy JSFiddle test(以下のコードスニペット)を参照してください、といくつかのために働くものを(返すthis oneを除きます関数が逆順などで動作している理由はありますが、関数呼び出しの1つをコメントアウトすると、どのURLが動作していて、どのURLが動作していないかが明確に示されます)。
// for some reason this is calling the functions in the reverse order -- but try commenting out and you'll see that the second one doesn't work, the first one does
$(function() {
works();
notWorking();
function works() {
$.getJSON('https://whateverorigin.herokuapp.com/get?url=' + encodeURIComponent("http://afcl.ussoccerda.com/sam/teams/index.php") + '&callback=?', function(data) {
alert(data.contents);
});
}
function notWorking() {
$.getJSON('https://whateverorigin.herokuapp.com/get?url=' + encodeURIComponent("http://afcl.ussoccerda.com/sam/teams/index.php?team=1642601") + '&callback=?', function(data) {
alert(data.contents);
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Hurl.itはしかしそれをうまくページデータを取得することができます:
私は私が間違ってプログラム的にやっているのと途方に暮れてよ、または私はこれを別の方法で修正することができます。 WhateverOriginを使用する以外にも、私のプロジェクト全体がそれに基づいており、この1つのWebページを除いて他のすべてのものが動作しているので、この時点ではあまりにも多くのオプションがありません。
最終バージョンでは、Webアプリケーションとサーバーは同じドメインには存在しません。これは今のところ、私がこのスクリプト/ウェブサイトを行っている人です(できませんそれ以上のものを特定しなくてはなりません)は、それを使用できる必要があります。私が参照した[特定のもの](http://afcl.ussoccerda.com/sam/teams/index.php?team=1642601)を除いて、その米国サッカーデベロップメントアカデミーのすべてのURLが機能しました。なぜ私のコードで失敗しているのか分かりません。 –
ajaxの代わりにjsonpを使用してみてください – majestyc54
JSONPを使用している場合、クロスドメイン要求を許可するためにAccess-Control-Allow-Originヘッダーを設定する必要があるからHTML情報を要求するサイトはありませんか?現在、WhateverOriginではその制限をバイパスできます。 –