0

同じドメイン上の2つの別々のサーバー間でリクエストを共有しているJavaScriptがあります。

.comはJavaScriptのドメインの要件ですか?

この場合、両方のサーバーは.abc.tyyドメイン上にあり、tyyは通常は.comになります。

ドメインに.comしか使用できないのではないかと思いますか?パーミッション拒否エラーが発生しますが、このコードは同じドメイン(.com)上の他の別々のサーバーで正常に機能します。

更新: これがまさに私がこれを使用している方法です:

123.abc.tyyには、アクセスしたいプロパティをロードするスクリプトがあります。

スクリプトタグを開いたときの123.abc.tyyのスクリプトは、document.domainを「abc.tyy」に設定します。

123.abc.tyyのスクリプトFROM234.abc.tyyで「getUser()」関数を呼び出すと、アクセス許可が拒否されたというエラーが発生します。

「getUser()」を呼び出す方法は次のとおりです。ブラウザでhttp://123.abc.tyyにアクセスすると、サイトでは、そのフレームの1つにロードするURLを指定できます。そのURLをそのページのhttp://234.abc.tyy/BeginLoadPatient.aspx "にポイントすると、次のようになります。

window.location =' http://234.abc.tyy/LoadPatient.aspx?PatientId= ' + getUser()'; getUserは123.abc.tyyで作成された関数です

信頼できるサイトに234.abc.tyyと123.abc.tyyを追加すると、すべてが正常に機能します。これは、同一生成元ポリシーをスキップしますか?

4

1 に答える 1

2

いいえ、SOPはドメインが何であるかを気にせず、同じ起源を表すだけです。(.comドメインがどこかにハードコーディングされている可能性がありますか?)

考慮すべきドメイン以上のものがあることに注意してください。同一生成元ポリシーは、プロトコル、ポート、およびホストも調べます。だからaaa.abc.tyybbb.abc.tyy異なる起源です。

関係するサーバーを管理している場合は、クロスオリジンリソースシェアリングを確認できますが、残念ながら、CORSは最新のブラウザーでのみ実装されています(サポートされているバージョンのIEでは、明示的に使用した場合にのみサポートされます)。 。

もちろん、もう1つのオプションはJSON-Pです。これには、現在クロスブラウザーを使用できるという利点があります。

注目すべきもう1つのことは、ここここdocument.domainの詳細です。


編集後に更新します。

スクリプトタグを開いたときの123.abc.tyyのスクリプトは、document.domainを「abc.tyy」に設定します。

123.abc.tyyのスクリプトFROM234.abc.tyyで「getUser()」関数を呼び出すと、アクセス許可が拒否されたというエラーが発生します。

同様document.domainに「abc.tyy」に設定する必要があります。BeginLoadPatient.aspx

信頼できるサイトに234.abc.tyyと123.abc.tyyを追加すると、すべてが正常に機能します。これは、同一生成元ポリシーをスキップしますか?

私はまったく驚かないでしょう(私にとってはかなり危険ですが)が、それについての直接の知識はありません。テストするのは簡単でしょう。

于 2010-09-15T13:50:10.120 に答える