誰が私のDOMを変更していますか?
-
19-08-2019 - |
質問
ブラウザが応答を受信した後、WebページのDOMを変更する可能性があるものは何ですか?
この動作は、使い捨てフォームトークンを保持する非表示の入力要素の値に見られます。
ブラウザで「ソースを表示」すると、サーバーによって書き出された正しい値が表示されます。フォームを送信したり、DOMの現在の状態を表示したり、要素をテキスト入力に変更したりすると、別の文字列が表示されます。そのため、サーバーにポストバックするときに入力が保持する値は、サーバーが最初に送信した値とは異なります。
javascriptを無効にしても問題は解決しません。読み取り専用属性を要素に追加しても解決しませんでした。
新しい情報: 私はこれをさらにいじってみましたが、信じられないかもしれませんが、Firefoxで画像をオフにするとこの問題はなくなります。
一体なぜこれが起こるのですか?
解決 3
私は、何が起こっているのかについての解釈が正しくありませんでした。それは良いことだと思います。私が見ていたと思ったことは決して起こらないからです!とにかく、私が今理解している状況は次のとおりです。
ここでのフォームトークンは1回限りの使用であるため、1回のページ読み込みに対してのみ有効です。ページ上のどこか他の場所に、src属性のないimgタグがありました。これにより、ブラウザは/から画像を読み込もうとしました。インデックスページはphpページであるため、トークンは循環します。
「ソースの表示」の実装(複数のブラウザでテストしていた)がページの再読み込みを引き起こすように思われたため、DOMが変更されたと思います...
すべての提案に感謝します。
他のヒント
ブラウザに<!> quot;フォームデータを保存<!> quot;機能、以前に送信された値をデータに事前設定することは可能です。
(人気のあるブラウザは隠しフィールドに値を入力しないほどスマートであると期待しますが、それは私が提案できるこのソースの1つです...)
フィールドタグに readonly = <!> quot; readonly <!> quot; と autocomplete = <!> quot; off <!> quot ; 。
ブラウザのオートコンプリートがそれを行うかどうかはわかりませんが、もっともらしいので、テスト中のブラウザでオートコンプリートを無効にして、それが何かを変更するかどうかを確認することもできます。
<!> quot;フォームの送信時に、DOM <!> quot; の現在の状態を表示するとどういう意味ですか?
フォームを送信すると、サーバーにリクエストが送信されますか?サーバーから返された結果ページのDOMの状態について話しているのですか?
クライアント側のスクリプトを使用せずに、クライアント側でDOMを変更することは実際には不可能です。
一方、サーバーに送信してまったく新しいDOMを取得した場合、サーバーはそれを変更しました。