2

たくさんのブログ投稿へのリンクと、各リンクの横にその投稿のコメント数を示す小さな吹き出しを表示するページを作成しようとしています。これを行う最も簡単な方法は、disqus が開発ドキュメントで話している「Javascript 公開 API」を使用することです。

ブラウザでこのリンクにアクセスすると、探している JSON が取得されます。

https://disqus.com/api/3.0/threads/details.json?forum=BLOG_FORUM&thread:ident=BLOG_THREAD&api_key=PUBLIC_API_KEY

ただし、jQuery から読み込もうとすると、恐ろしい XMLHttpRequest cannot load: Origin is not allowed by Access-Control-Allow-Origin が表示されます。

$.getJSON() と $("#div").load() を使用してロードしようとしました。

Disqus API の「公開鍵にリンクされたドメイン」設定に localhost と 127.0.0.1 の両方を追加しました。

4

4 に答える 4

3

このAPIクライアント側を使用するには、JSONPリクエストを実行する必要があります。これの事実上の標準は、関数名を指定するコールバックパラメーターです。Disqusも Withに変更.jsonする必要があります。追加するだけで、jQueryがそこから取得します。.jsonpjQuery.getJSON&callback=?

于 2012-06-07T22:26:04.050 に答える
3

応答ヘッダーの Origin エントリとして「localhost」を追加することはできません。これは、CORSの JavaScript セキュリティ仕様によるものです。

Access-Control-Allow-Originを*に設定して、任意の Web サイトが XMLHTTPRequest/AJAX を介してデータにアクセスできるようにすることができますが、 「localhost」に設定することはできません。

この問題を解決するために考えられる解決策は次のとおりです。パブリック ドメイン/場所でリクエストを行うページをホストし、レスポンス ヘッダーAccess-Control-Allow-Originにホスト名を含める。

&callback=?「@Matthew Flaschen」が述べたように、これを達成するためにJSONP リクエストを使用できます

<script>または、最後の手段として、 「src」属性で URL を指定してタグ内のスクリプトとともに JSON 結果をロードし、 JSON データにアクセスし
ます。<variable_name>={JSONObject}、その変数を介してデータにアクセスできます ここ
で同じ種類の問題が発生した人 もいますブラウザが拒否する理由をまだ理解できませんでしたが、ブラウザはサポートしています(つまり、公開Webサイトはデータにアクセスできますが..... ) このことにはいくつかの陰謀があるかもしれません (データにアクセスする Web サイトを追跡します)

Access-Control-Allow-Origin=localhostAccess-Control-Allow-Origin=*

于 2012-09-29T12:39:35.640 に答える
0

実際には、これらの手順に従って、スクリプトとデータ駆動型の属性を使用するだけでこれを行うことができます。Disqus の count.js スクリプトをロードして、data-属性を使用するだけです。

編集:ここで整数のみを表示するように構成できます(その後、必要に応じてスタイルを設定できます)。

于 2012-06-07T19:32:40.400 に答える
0

上部にこのヘッダーが必要なだけだと思います:

<?php header('Access-Control-Allow-Origin: http://disqus.com'); ?>
于 2012-09-29T10:26:30.597 に答える