6

Web 用に開発するとき、奇妙な制限と格闘し続けています。そのうちの 1 つは AJAX リクエストの同一オリジン制限であり、クロスドメイン リソースへのリクエストをブロックする代わりに、Cookie を作成するときに単に破棄する方が簡単ではなかったかどうか自問しています (ブラウザ セッション)。

Cookie は機能ですが、必須ではありません (たとえば、コンテキストを維持する必要がある場合は、リクエスト URL に Cookie を含むページを生成できます)。代わりに、クロスドメイン ブロッキングは回避するのが非常に面倒です。

また、文字通り全世界の誰もが認証なしでアクセスできるリソースに特定のサブジェクトがアクセスするのをブロックすることは、論理的な観点から非常に奇妙に思えます。

同じオリジンポリシーが本当に最善の解決策であるという本当の技術的な理由があるかどうか疑問に思っています。

私は好奇心から尋ねていることに注意してください... Web時代では、経験が良いか悪いかを示す可能性が与えられる前に、恐ろしい解決策が標準で結晶化される可能性があることを完全に認識しています( Javascript など)。

4

1 に答える 1

4

すべての認証資格情報が Cookie ベースであると想定していますが、これは正しくありません。ブラウザーが PKI 証明書を使用して別のサイトに対して認証を行う場合や、サイトが信頼できるネットワーク上に特定の IP アドレスを持っているという理由だけでクライアントを信頼する場合があります。これは、クライアントが個々の要求に対してオフにできるものではありません。

ただし、サイトがリソースへのクロスオリジン要求を許可する方法を標準化する作業が行われています. コンテンツの一部が公開されており、どのクライアントにも特別な権限がないことをサイトが認識している場合、HTTP ヘッダーを設定して、他のサイトから読み込まれたスクリプトがそのコンテンツを表示できることをブラウザに伝えることができます。

また、文字通り全世界の誰もが認証なしでアクセスできるリソースに特定のサブジェクトがアクセスするのをブロックすることは、論理的な観点から非常に奇妙に思えます。

ブラウザは、全世界が認証なしでリソースにアクセスできることを知りません。特定の URL にアクセスするときに、他のクライアントと同じコンテンツが表示されるかどうかはわかりません。それがブロックしているのは、リモート リソースの独自の、潜在的に一意のビューへのアクセスです。

于 2012-11-01T00:25:21.157 に答える