<br />原文: http://research.microsoft.com/~helenw/papers/subspace.pdf window.name 転送技術はもともと、クッキーのいくつかの欠点 (ドメイン名ごとに 4 x 20 Kb の制限、データは文字列のみ、クッキーの設定と取得の構文が複雑など) を解決するために Thomas Frank によって発明されました (詳細については、原文「クッキーなしのセッション変数」を参照してください)。その後、Kris Zyp はこの方法に基づいて window.name 転送を強化し、Dojo (dojox.io.windowName) に導入して、クロスドメイン データ転送の問題を解決しました。 window.name の優れた点:名前の値は、異なるページ (異なるドメインでも) を読み込んだ後も保持され、非常に長い名前の値 (2 MB) をサポートできます。 window.name 伝送技術の基本原理と手順は次のとおりです。 ![]() name はブラウザ環境の global/window オブジェクトのプロパティであり、フレームに新しいページが読み込まれると、name のプロパティ値は変更されません。 iframe にリソースを読み込むと、ターゲット ページはフレームの name 属性を設定します。この名前属性値を取得して、Web サービスによって送信された情報にアクセスできます。ただし、name 属性は同じドメイン名を持つフレームにのみアクセスできます。つまり、name 属性にアクセスするには、リモート Web サービス ページが読み込まれた後、フレームを元のドメインに戻す必要があります。同一生成元ポリシーにより、他のフレームが名前属性にアクセスすることはできません。名前属性を取得したら、フレームを破棄します。 最上位レベルでは、name 属性は安全ではなく、name 属性に設定されたすべての情報は後続のすべてのページで利用できます。ただし、windowName モジュールは常に iframe 内のリソースを読み込み、データが取得されるか、最上位レベルの新しいページを参照すると、iframe は破棄されるため、他のページは window.name プロパティにアクセスできなくなります。 基本的な実装コードは YUI に基づいており、Kejun によって書かれた例から派生しています。 (関数(){ var YUD = YAHOO.util.Dom、YUE = YAHOO.util.Event; データリクエスト = { _doc: ドキュメント、 cfg: { プロキシ URL: 'proxy.html' } }; dataRequest.send = function(sUrl, fnCallBack){ if(!sUrl || typeof sUrl !== '文字列'){ 戻る; } sUrl = (sUrl.indexOf('?') > 0 ? '&' : '?') 'windowname=true'; var frame = this._doc.createElement('iframe'), state = 0, self = this; this._doc.body.appendChild(フレーム); frame.style.display = 'なし'; var clear = 関数(){ 試す{ frame.contentWindow.document.write(); フレームのコンテンツウィンドウを閉じます。 self._doc.body.removeChild(フレーム); }キャッチ(e){} }; var getData = 関数(){ 試す{ var da = frame.contentWindow.name; }キャッチ(e){} クリア(); if(fnCallBack && typeof fnCallBack === 'function'){ fnCallBack(da); } }; YUE.on(フレーム、'load'、関数(){ if(状態 === 1){ データを取得します。 } そうでない場合(状態 === 0){ 状態 = 1; frame.contentWindow.location = self.cfg.proxyUrl; } }); フレーム.src = sUrl; }; })(); |
>>: element-uiのアップロードコンポーネントでファイルやその他のパラメータを転送する際の問題を分析する
目次メモリプールの概要1. nginxデータ構造2. nginxはOSからスペースngx_creat...
序文日常業務では、すべての jpg ファイルを bnp に変更したり、名前の 1 を one に変更...
序文実際、Linux では、控えめな「!」が驚くほど多くの用途で使用されています。この記事では、「!...
目次コンセプト紹介論理的ルール完全なコード主な実装コンセプト紹介セルオートマトンとは、コンピュータの...
公式の Docker レジストリを使用して作成されたウェアハウスでは、イメージを削除してもデフォルト...
目次フラット化とは何か再帰トストリング減らすアンダーコア_.平坦化_。連合_。違い要約するフラット化...
この記事では、テキストクロックを実装するためのキャンバスの具体的なコードを例として紹介します。具体的...
1.ダウンロードしてインストールする公式ウェブサイトからコミュニティ エディションの dmg インス...
目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...
この記事では、Vueカウンターの簡単な実装コードを例として紹介します。具体的な内容は以下のとおりです...
実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...
目次1. Tomcat の概念–1、サーバー–2、ウェブサーバー–3、Tomcatサーバー次にTom...
目次導入説明名前の競合私有財産要約する導入シンボル変数を作成する最も簡単な方法は、Symbol() ...
HTMLのdivブロックを使用していて、ブロックの中央をしっかりと接続できず、解決できない場合1. ...
目次概要オブジェクトの残り属性オブジェクトの拡張プロパティオブジェクトの浅いコピーを作成するkeyo...