在浏览器收到响应后,可能会更改网页的DOM?
我在包含一次性表单令牌的隐藏输入元素的值中看到此行为。
当我在浏览器中查看“源”时,我看到了正确的值,由服务器写出。当我提交表单时,查看DOM的当前状态,或者只是将元素更改为文本输入,我看到一个不同的字符串。因此,当回发到服务器时输入所持有的值与服务器最初发送的值不同。
禁用javascript后问题仍然存在。向元素添加readonly属性也无济于事。
新信息: 我更多地摆弄了这个,不管你信不信,在Firefox中关闭图片会让这个问题消失。
为什么会发生这种情况?
答案 0 :(得分:1)
如果浏览器具有“保存表单数据”功能,则可以使用先前提交的值预先填充数据。
(我希望流行的浏览器足够智能,不会填充隐藏的字段,但这是我可以建议的一个来源......)
答案 1 :(得分:1)
您可能会在字段标记中添加 readonly =“readonly”,并且 autocomplete =“off”。
不确定浏览器自动填充是否会这样做,但这似乎是合理的,也可以尝试在测试浏览器中禁用自动完成功能,看看是否有任何改变。
答案 2 :(得分:1)
我对正在发生的事情的解释不正确。我想这是件好事,因为我认为我所看到的不应该发生!无论如何,这就是我现在理解的情况:
此处的表单令牌是单用的,因此它仅对单个页面加载有效。页面上的其他位置是一个没有src属性的img标记,这导致浏览器尝试从/加载图像。由于索引页面是一个php页面,因此令牌被循环。
我认为DOM改变了,我认为,因为'view source'的一些实现(我在几个浏览器中测试)似乎导致页面重新加载...
感谢所有建议。
答案 3 :(得分:0)
当我提交表单时,“是什么意思,查看DOM的当前状态”?
如果您提交表单,它是否会向服务器发送请求?您是在谈论服务器发回的结果页面上的DOM状态吗?
在没有涉及客户端脚本的情况下,您的DOM在客户端更改是不可能的。
另一方面,如果你提交给服务器并获得一个全新的DOM,那么,服务器就改变了它。