0

http ://localhost/mySite/Page1.aspx に、src https ://localhost/mySite/Page2.aspxの iframe を含むWeb ページがあります。

iframe ページ (Page2.aspx) 内に、JavaScript で Cookie を設定します。親ページ(Page1.aspx)でそのCookieを読み取るにはどうすればよいですか??? Page1 は Page2 が設定した Cookie を認識していないようです。

Cookie を設定/読み取るには、jQuery.Cookie プラグインを使用します。

$.cookie('myKey', JSON.stringify(data), { expires: 1, path: '/', domain: 'localhost' });

ところで、誰かがそのようなスキームでクライアント上でデータを転送する方法を教えてくれれば、喜んでそれについて知りたいと思います(サーバープーリングは私にとって解決策ではありません)。sessionStorage / localStorage で動作することがわかりましたが、IE でのみ動作します :(

4

2 に答える 2

1

質問のコメントに基づいて:

この問題は、異なるソースのコンテンツが互いに干渉することを禁止する Same Origin Policy (SOP) によるものです。さまざまなソースは、ドメインの比較に基づいているだけでなく、使用されているプロトコルにも基づいているため、このウィキペディアのページに明確に示されています。したがって、http://localhostは とは別の起源https://localhostです。

これら 2 つのソースが通信できるようにするには、次のようにします。

  • このリンクは、一般的に使用される手法 (iframe プロキシと URL ポーリング) を完全に説明しており、「物理法則: IFrame でできること」という段落で SOP のルールをわかりやすくまとめています。
  • この他の十分に文書化された記事 (上記の記事からリンクされています) は、通常の手法をエレガントなソリューションに統合します
  • 対象となるブラウザーがすべて HTML5 に準拠している場合 (つまり、最新かつ標準のブラウザーであり、MSIE のほとんどのバージョンではない)、この標準により、新しいフレーム間通信システムとイベントが導入されましwindow.postMessage()onMessage

Ternarylabs の PortholeEasyXDMなどの無料のビルド済みソリューションもあります (テストはしていませんが) 。

乾杯!

于 2012-09-05T09:43:46.533 に答える
0

これが完全に正しいとは思いません。secure 属性が true に設定されていない Cookie は、使用中のプロトコルに関係なく、ドメイン全体で共有されます。

あなたにとっての本当の問題は、この側面を無視するjqueryです。これは、 as in this questionsecure=trueを使用してJSON属性として指定することで変更できます。$.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });

于 2013-08-21T04:48:56.167 に答える