传统的Web应用程序仍然使用Shift_JIS作为页面字符代码。
在此应用程序中,如果使用JavaScript将特定的多字节字符设置为GET参数,则某些字符将不会转换。
[Page字符代码:轴_JIS]
<!doctype html>
<html>
<head>
<title>Shift_JIS_AutoUrlEncode_Bug?</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<script type="text/javascript">
<!--
function exec() {
var url = location.href.split('?')[0];
location.href = url + '?value=フー'
}
-->
</script>
</head>
<body>
<input type="button" value="Go Get Paramater Auto Encode!" onclick="exec();">
</body>
</html>
这个字是“"。
浏览器的自动编码结果为“%81["。
我想应该是“%81%5B”才对。
以前的Web容器(tomcat)允许此请求,但最新版本的Web容器(tomcat)导致错误“RFC 7230和RFC 3986冲突”。
如果说有什么不同的话,那似乎是Chrome和Edge中的bug,但你怎么看呢?
谢谢。
1条答案
按热度按时间vuktfyat1#
我可以在Edge、Chrome和Firefox上重现这个错误转换的URL,这意味着它不是Edge或Chrome特有的问题。我认为你可以在Tomcat端解决它。你可以参考this thread。