2

幅広いドメインで使用できるブックマークレットを作成しています。このブックマークレットの一時的な設定を保存するためにいくつかのCookieを設定したかったので、このスクリプトからCookieを設定すると、そのCookieがスクリプトの発信元のドメインに割り当てられると想定しました。

これはそうではありませんでした。ブックマークレットは、表示されている現在のサイトのドメインにCookieを割り当てることができます。これは私のニーズには適していません(これにより、すべてのドメインのブックマークレットではなく、ドメインごとの設定が記憶されます)。

私の質問は、これはどういうわけかクロスドメインポリシーを破っていますか?そしてフォローアップの質問ですが、ブックマークレットが使用されている正しいドメインではなく、ブックマークレットのCookieを保存するにはどうすればよいですか。

4

2 に答える 2

3

ブックマークレットは現在のページのコンテキストで実行されているため、ブックマークレットが実行されているセキュリティコンテキストであるため、クロスドメインポリシーに違反することはありません。現在のページのドメインにのみCookieを設定できます。このため、ブックマークレットに独自のCookieを設定することはできません。

これは、さまざまなドメインから特定のページに読み込まれるスクリプトと同じです。重要なのはページの出所であり、スクリプトの出所ではありません。

すべてのドメインにわたってスクリプトの設定を一度保存​​する唯一の方法は、クロスドメインJSONPを使用してサーバーに設定を保存することですが、それでも一意のユーザーを特定するのは難しい場合があります。

あなたがやろうとしていることは、プラグイン用のローカルストレージを備えたブラウザプラグインにはるかに適しているようです。

于 2012-09-05T23:22:14.360 に答える
0

実際には別のドメインで実行されるため、クロスドメインポリシーに違反することはありません(これがブックマークレットの背後にあるポイントです)。

Cookie情報を保存する場合は、サードパーティのサービスを利用します(たとえば、Cookieの変更を受け入れるコードを備えた独自のサーバーを用意します)。サービスを書き込み専用にしない限り、すべてのドメインがユーザーのCookieを取得できるため、これはセキュリティの問題になる可能性があることに注意してください(これは疑わしいです)。

次に、別の方法があります。設定をCookieに保存しないでください。代わりに別の記憶媒体を使用してください。

于 2012-09-05T23:21:55.463 に答える