来自@charlietfl的改编解决方案
仅当用户具有受影响时才会显示隐藏的iframe 用户代理。今天,这包括最新的Edge浏览器,但是 十月份,UserAgent中的版本应该再次增加。
iframe会打开,而不是与父窗口进行交互 到可以访问用户会话的页面。它呈现了一个HTML表单 受bug影响的类型,并立即发布自己。 检查POST数据是否损坏,结果是否可用 到用户会话。
相当明显的javascript(使用jquery)看起来有点像这样:
% if ( $do_check ) { <iframe id="edge_browser_check_iframe" style="display:none;"></iframe> <script type="text/javascript"> if ( /Edge\/17\.17134/.test( navigator.userAgent )) { $("#edge_browser_check_iframe").attr( 'src', 'edge_browser_check-iframe.html' ); } </script> % }
解决方法是创建JavaScript函数以在用户打开网站时检测Edge浏览器及其版本。
如果它是有问题的版本,则通知用户使用其他浏览器,不允许任何进一步的交互。
如果是Edge的任何其他版本,则让用户使用该站点。
问候
迪帕克
我要做的第一件事是审计缺失 value 上 <option> 使用javascript,如果这是问题的根源,似乎在您发布的链接中提到。
value
<option>
然后,如果您无法嗅探用户代理中的差异,则可以通过编程方式(javascript)在遇到该用户代理时将屏幕外表单提交到屏幕外或隐藏的iFrame目标。
这将在页面加载时完成,无需用户交互
然后验证服务器端并使用a将页面返回到iframe postMessage() 如果存在问题则会告诉父页面的调用。
postMessage()
在父级中也需要postMessage事件监听器。
可以根据需要使用脚本将表单和iframe插入到dom中