1

可能かどうかはわかりませんが、サーバー上にないWebページにスキャンしてソースコードを取得するスクリプトを作成して、PERLやRailsスクリプトなどのデータをJquery/Javascriptで使用できるようにします。

それは可能ですか?

4

4 に答える 4

3

一般的な場合、いいえ、同一生成元ポリシーのためにクライアントからは不可能です。これにより、異なるオリジンからロードされたコンテンツのHTMLおよびスクリプトソースをロードして表示できなくなります。(もちろん、サーバー上のJavaScript( NodeJS、Rhinoなど)を使用してこれを行うことができます。)

ただし、他のドメインがクロスオリジンリソースシェアリングをサポートしていて、使用しているブラウザもそれをサポートしている場合、他のエンド(他のWebサイト)がオリジン(またはすべてのオリジン)からのコードにアクセスできるようにすることができます。ただし、もう一方の端はそれを許可する必要があります。

このコンテキストでJSON-Pについても耳にしますが、これでは相手側からのみデータ(HTMLソースなどではない)を取得でき、相手側が明示的にサポートしている必要があります。

したがって、おそらくサーバーが関与している必要があります。ただし、必ずしもサーバーである必要はありません。目的によっては、 YQLクロスドメインプロキシとして使用できます

于 2012-04-17T16:37:13.013 に答える
0

No its not possible from clientside to grab HTML code from another webpages. Unless you are able to configurate the other servers.

http://en.wikipedia.org/wiki/Same_origin_policy For more reading

于 2012-04-17T16:37:12.427 に答える
0

同一生成元ポリシー

同一生成元ポリシーは、JavaScriptコードが対話できるWebコンテンツに対する抜本的なセキュリティ制限です。これは通常、Webページに要素が含まれている場合、または他のブラウザウィンドウを開いている場合に機能します。この場合、同一生成元ポリシーは、1つのウィンドウまたはフレーム内のJavaScriptコードと他のウィンドウおよびフレームのコンテンツとの相互作用を管理します。具体的には、スクリプトは、スクリプトを含むドキュメントと同じオリジンを持つウィンドウとドキュメントのプロパティのみを読み取ることができます。

ドキュメントの発信元は、ドキュメントのロード元のURLのプロトコル、ホスト、およびポートとして定義されます。異なるWebサーバーからロードされたドキュメントは、異なる出所を持っています。同じホストの異なるポートを介してロードされたドキュメントは、異なる出所を持っています。また、http:プロトコルでロードされたドキュメントは、同じWebサーバーからのものであっても、https:プロトコルでロードされたドキュメントとは異なるオリジンを持っています。

スクリプト自体の出所は同一生成元ポリシーに関連していないことを理解することが重要です。重要なのは、スクリプトが埋め込まれているドキュメントの出所です。たとえば、ホストAによってホストされているスクリプトが(要素のsrcプロパティを使用して)ホストBによって提供されているWebページに含まれているとします。そのスクリプトの発信元はホストBであり、スクリプトは次のコンテンツに完全にアクセスできます。それを含むドキュメント。スクリプトが新しいウィンドウを開き、ホストBから2番目のドキュメントをロードすると、スクリプトはその2番目のドキュメントのコンテンツにも完全にアクセスできます。ただし、スクリプトが3番目のウィンドウを開き、ホストCから(またはホストAから1つでも)ドキュメントをロードすると、同一生成元ポリシーが有効になり、スクリプトがこのドキュメントにアクセスできなくなります。

著者:David Flangan:Javascript; 明確なガイド

于 2012-04-17T16:39:07.283 に答える
0

あなたの質問の最も純粋な意味では、はい、これは可能ですが、これらのテクノロジーがどのように機能するかを誤解しているように感じます。x-domainリクエストが可能であったとしても、ブラウザ内で使用される場合を除いて、javascriptが外部ソースからデータを収集する方法は文字通りありません。ただし、答えが「はい」と答えるのは、これらの制限が適用されるのは、JavaScriptがブラウザー内で実行されている場合のみであるためです。たとえば、javascriptをnode.jsと組み合わせて使用​​している場合、javascriptはソケットを作成でき、xドメインの制限が適用されなくなるため、ルールは完全に異なります。

より適切な答えが提供されるように、おそらくあなたはあなたの質問を明確にするべきです。

于 2012-04-17T16:39:17.220 に答える