Answers:
它们需要进行百分比编码:
> encodeURIComponent('&')
"%26"
因此,在您的情况下,URL如下所示:
http://www.mysite.com?candy_name=M%26M
A potentially dangerous Request.Path value was detected from the client (&).
这不仅适用于URL中的&符号,而且还适用于所有保留字符。其中一些包括:
# $ & + , / : ; = ? @ [ ]
这个想法与&
在HTML文档中编码相同,但是上下文已更改为在URI内,除了在HTML文档内。因此,百分比编码可防止在两个上下文中进行解析时出现问题。
当您需要将一个URL放在另一个URL内时,这很有用。例如,如果您想在Twitter上发布状态:
http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com)
我的Tweet中有很多保留字符,即?'():/
,因此我对status
URL参数的整个值进行了编码。当使用mailto:
具有消息正文或主题的链接时,这也很有用,因为您需要对body
和subject
参数进行编码,以使换行符,&符等保持完整。
如果保留集中的字符(“保留字符”)在特定上下文中具有特殊含义(“保留目的”),并且URI方案指出有必要将该字符用于其他目的,则该字符必须为百分比编码。对保留字符进行百分比编码涉及将字符转换为其相应的ASCII字节值,然后将该值表示为一对十六进制数字。然后在URI中使用这些数字后跟用作转义字符的百分号(“%”),代替保留字符。(对于非ASCII字符,通常会在UTF-8中将其转换为字节序列,然后按上述方式表示每个字节的值。)保留字符“ /”,例如,如果在“路径”中使用 URI的特殊组成部分,其特殊含义是成为路径段之间的分隔符。如果根据给定的URI方案,“ /”必须位于路径段中,则必须在该段中使用三个字符“%2F”或“%2f”,而不是原始的“ /”。
http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters
! ' ( ) *
没有使用进行URL编码encodeURIComponent
。
尝试使用http://www.example.org?candy_name=M%26M
。
另请参阅此参考资料和Wikipedia上的更多信息。
您可以使用%字符来“转义” URL中不允许的字符。参见[RFC 1738]。
http://www.asciitable.com/上的ASCII值表。
您可以看到&
十六进制为26-因此您需要M%26M。
如果有人想要用PHP,这可能会有所帮助
$variable ="candy_name=M&M";
$variable = str_replace("&", "%26", $variable);
如果您无法使用任何库对值进行编码, 请访问http://www.urlencoder.org/或http://www.urlencode-urldecode.com/或...
只需输入您的值“ M&M”,而不是完整的URL ;-)
我想对Blender解决方案添加一点评论。
您可以执行以下操作:
var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M');
输出:
http://example.com?candy_name=M%26M
伟大的事情不仅仅适用于&,而且适用于任何特殊字符。
例如:
var link = 'http://example.com?candy_name=' + encodeURIComponent('M&M?><')
输出:
"http://example.com?candy_name=M%26M%3F%3E%3C"
您宁可使用此encodeURIComponent函数传递参数,因此您不必担心传递任何特殊字符。
data: "param1=getAccNos¶m2="+encodeURIComponent('Dolce & Gabbana') OR
var someValue = 'Dolce & Gabbana';
data : "param1=getAccNos¶m2="+encodeURIComponent(someValue)
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent