Microsoft Edge漏洞,空的href和base标签

3

微软的新浏览器Edge似乎不接受空的href,例如<a href="">。在其他所有浏览器中,这可以用来链接到base标签。但在Edge中似乎不是这种情况。

我在这个问题中找到了解决这个问题的方法,即将href设置为./

但是在许多站点上更改这个设置非常麻烦。是否有其他的替代方案,不需要更改所有的href本身呢?

提前致谢。


我测试了一下,对我来说一切都正常,我没有看到任何问题!!! - Nabi
我正在使用这个基础标签 <base href="https://www.example.com"> 和一个格式化为 <a href="">example</a> 的链接。 - Alec Meijerink
1
这绝对是Microsoft Edge中的一个错误/疏忽。正如RFC 3986(https://tools.ietf.org/html/rfc3986,第4和5节)所述,基本URI必须添加到任何相对引用之前 - 而空路径也是相对引用(第4.2节)。 - fritzmg
感谢您的研究。我会尝试向微软提交一些反馈。 - Alec Meijerink
我希望微软最终能够解决这个问题。这会在很多网站上引起问题。 - fritzmg
显示剩余2条评论
1个回答

0
使用实用函数来重写空的 href。例如:

function rewrite_empty_hrefs()
  {
  var dom_parser = new DOMParser();

  var xml_serializer = new XMLSerializer();
  
  var old_html_dom = dom_parser.parseFromString(document.body.innerHTML,"text/html");

  var base_href = old_html_dom.querySelector("base").href;

  var old_xhtml_string = xml_serializer.serializeToString(old_html_dom);

  var new_xhtml_string = old_xhtml_string.replace(/(href=")(")/g, "$1"+base_href+"$2"); 

  document.body.innerHTML = new_xhtml_string;
  }

rewrite_empty_hrefs();
<base href="http://www.example.com">
<a href="">example.com</a>
<a href="">example.org</a>
<a href="">example.net</a>

参考资料


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接