0

重複の可能性:
同一生成元ポリシーを回避する方法

宝くじのパワーボール番号を抽出して表示する個人 Web ページを作成しています。この1つのリンクを除くすべてで成功しました:

var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "get", "http://www.powerball.com/powerball/pb_numbers.asp", false );
xmlHttp.send(null);

document.body.innerHTML = xmlHttp.responseText;

xmlHTTP.status を確認したところ、0 でした。しかし、ライブ HTTP ヘッダー アプリを使用すると、リクエストが送信されたことがわかり、ページが受信された HTTP/1.0 200 OK が成功しました。しかし、xmlHTTP オブジェクトには何も受信されません。responseText はありません。初期化されていない get のステータス 0 のみです。

Access-Control-Allow-Origin:編集:リターンヘッダーにディレクティブがありません。別のドメインに属しているために制限されている場合、これはなぜですか?

4

4 に答える 4

0

それがどのように機能するのか、機能するのかはわかりませんが、機能しない理由について上記の回答があるようです。代わりに ajax を使用することをお勧めします。それはシンプルでうまく機能します。

これを使用する例を次に示します。

var site =  $.ajax({
    url:        "http://google.com",
    type:       "GET",
    dataType:   "html",
    async:      false
}).responseText;
document.body.innerHTML = site;

幸運を、

于 2012-09-30T10:23:32.240 に答える
0

クロスドメイン ajax の代替手段は次のとおりです。

  1. CURL を使用してリモート サーバーを要求するプロキシを作成します。
  2. そのプロキシ ファイルを ajax 呼び出しから呼び出す
于 2012-09-30T12:17:30.657 に答える
0

ここでの問題は、same origin policyです。その Web サイトがJSONP APIを提供しない限り、AJAX を使用してその Web サイトからデータを取得することはできません(それでも技術的には AJAX ではありません)。

iframeを使用してある程度のことを行うことはできますが、ページの関連部分だけでなく、ページ全体を含める必要があります。

Web スクレイピングが必要な場合は、それを行うためのサーバー側プロキシが必要です。

あなたを助けるかもしれないいくつかのツール:

于 2012-09-30T11:59:00.293 に答える
0

XHRを使用して異なるオリジンからデータを読み取ることはできません。リクエストはブラウザのユーザーとして行われるため、ユーザーを認証する可能性のあるすべてのもので行われるため、機密情報を取得する可能性があります (XHR を使用して独自のサーバーにコピーできます)。

回避策については、このスタックオーバーフローの質問を参照してください。

于 2012-09-30T10:18:31.760 に答える