0

javascript を使用して Web から動的コンテンツを呼び出すページを作成していますが、明らかに SOP (same origin policy) で問題が発生します。サーバーで呼び出しをチェックする必要があるため、本番ページでは機能しないことはわかっていますが、実際に機能するところまで持っていますが、データにアクセスできません。それが可能かどうか本当に知りたいです。

以下のコードは、URL をファイルに追加します。

var url = 'http://theSite.com/?query=' + userInput + '&othercode';
var script = document.createElement('script');
script.setAttribute('src', url);
script.setAttribute('type', "application/json");
script.setAttribute('id', "special");
document.getElementsByTagName('body')[0].appendChild(script);

これにより、次がhtmlに追加されます。

<script src="http://theSite.com/?query=userInput&othercode" type="application/json" id="special"></script>

ここでの問題: 結果のデータにアクセスするにはどうすればよいですか? JSON スクリプトを取得しましたが、それを Javascript の変数にアタッチする方法や使用する方法がわかりません。

コードは次の基本的な形式で届きます。

{"count":5,"results":[{"name":"value","id":"value2", ..... }], ...  "code":200}

データにアクセスしたり、変数に代入したりするにはどうすればよいですか?

(私はまだjQueryを試していませんが、おそらく簡単になることはわかっていますが、jQueryでこれをすべてやり直すよりも、誰かがこのコードを手伝ってくれると助かります)。

4

1 に答える 1

1

呼び出しているサービスを制御する必要があります ( theSite.com)。1 つのオプションは、JSON ではなく JSONP を返すようにすることです。

dataCallback({"count":5,"results":[{"name":"value","id":"value2", ..... }], ...  "code":200});

iframeまたは、から提供される内にスクリプトを作成しtheSite.com、 を使用postMessageしてその結果をウィンドウに伝えます。

そうでなければ...まあ、あなたはまさにSOPが防ごうとしていることをしているので、可能性は厳しいです.AFAIK.

ああ、もう 1 つのオプションです。サーバーに対して AJAX 呼び出しを行います。これにより、サービス呼び出しが行われ、データが渡されます。サーバーは、クライアントのように制限されていません。

于 2012-01-01T15:35:47.760 に答える