我有一个带有Angular JS前端的Laravel 5.2应用程序。我遇到了一个首先表现为CSRF令牌不匹配异常的问题。进一步调试,我发现虽然正确生成并填充了包含CSRF值的隐藏输入字段,但在页面加载期间的某个时候,该值将从DOM中删除。
这是原始DOM元素的样子:
<input type="hidden" name="_token" value="foo-bar">
显然,进行修改的代码必须是JavaScript。我尝试搜索与输入类型和名称相关的DOM绑定,并且显示为空白。同样,看似没有寻找父DOM元素的绑定。
然后我注意到一些更奇怪的东西:我可以将该字段重命名为另一个名称&#39;属性,甚至更改字段类型(比如说,&#39; text&#39;),仍然会发生值删除。我发现任何21个或更多字符的值都会被删除。只剩下20个字符的值。
我已经浏览了每一行自定义JS代码,并没有找到罪魁祸首。没有引用字段名称或值长度。
安装了很多作曲家包,许多不同的供应商,然后是Angular的东西和jQuery UI的东西 - 我无法合理搜索的大量JS,因为我实际上没有任何东西搜索(甚至无法搜索20/21值,因为grep
会产生数千个结果)。
Chrome允许我在该输入元素上放置一个断点,并说当属性发生变化时应该触发断点...除非它没有触发。
关于如何追踪问题根源的任何其他想法?
答案 0 :(得分:0)
好吧,一天后我终于找到了问题:我的Chrome浏览器中安装了“Adblock Plus for YouTube”扩展程序。这个扩展已安装多年,但现在 - 随机 - 开始导致问题。禁用它可以解决问题,重新启用它会重新引入问题。
通过消除过程找到。仍然没有好方法来调试我描述的问题。