gpt4 book ai didi

javascript - 应该如何转义 URL 的片段部分?

转载 作者:数据小太阳 更新时间:2023-10-29 04:15:00 24 4
gpt4 key购买 nike

如果 URL 在片段部分(即 # 之后)有不寻常的字符,应该如何(百分比)转义它们?我找不到关于浏览器如何处理这个问题的一致答案,这可能是不使用它们的一个很好的理由,但我想知道“正确”的答案是什么。

我的测试似乎建议根本不要转义,但这仅在跟踪链接时才可靠,而不是在粘贴到浏览器的地址栏时。

我写了一个小网页作为附件。然后我将以下链接粘贴到各种浏览器中。页面中的“转到”链接用于查看单击链接而不是粘贴链接时发生的情况(这在某些浏览器中似乎有所不同)

http://www.frankieandshadow.com/test.html/?new=1# {# &}%7B%23%20%26%7D

(我注意到 stackoverlow 的 URL 模式匹配不喜欢那样 - 我打算整行;再次可能有我的线索!)

Chrome 似乎不会进行任何形式的转义,并且始终如一地生成:

#{# &}%7B%23%20%26%7D

Firefox 将一些(但不是全部)转义字符替换为非转义字符,然后生成

#{# &}{# &}

如果你点击链接,这也是一样的

Safari(在 PC 上)做相反的事情:它在粘贴时对未编码的异常字符进行编码,然后生成

#%7B%23%20&%7D%7B%23%20%26%7D

但是点击链接就不同了,生成

#{# &}%7B%23%20%26%7D

IE9,令人惊讶的是,其行为与 Chrome 一样

IE7 在粘贴时用 %20 替换真实空间,但不保留 URL,并生成

#{#%20&}%7B%23%20%26%7D

如果你点击链接,它会给出

#{# &}%7B%23%20%26%7D


<html>
<head>
<title>test</title>
<script type="text/javascript">
function wibble() {
document.getElementById("wobble").innerHTML =
location.hash.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
}
</script>
</head>
<body onload='wibble()'>
<div id='wobble'></div>
<a href='/test.html?new=1#{# &}%7B%23%20%26%7D'>go</a>
</body>
</html>

最佳答案

RFC3986 中的 ABNF表示片段由 pchars 组成 - 即它们是百分比编码的。

也就是说片段标识符中的字符可以是任何字母数字或其中之一

-._~!$&'()*+,;=:@

所有其他字符都应进行百分比编码。

关于javascript - 应该如何转义 URL 的片段部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13861273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com