为什么Firefox和Chrome在POST期间用CR + LF替换LF字符?Firefox和Chrome在POST期间用CR + LF替换LF
我写了下面的测试:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>
<script type="text/javascript">
function lftest()
{
var linefeed = "before";
linefeed += String.fromCharCode(10); //linefeed
linefeed += "after";
$("#field").val(linefeed);
$("#formthing").submit();
}
</script>
</head>
<body>
<form id="formthing" method="post" action="http://someurl.com/resource">
<input type="hidden" id="field" value="" name="line" />
<a href="#" onclick="lftest()">send</a>
</form>
</body>
</html>
开发工具网络选项卡显示POST数据:
before%0D%0Aafter
但表单输入值在POST期间被编码。 %0A不是LF协议的HTTP协议 – pepsi
@pepsi这是一个很好的观点。尽管如此,就我所知,这些浏览器总是*做到了这一点,而且我发现的唯一解释就是协议。 (当然,你的观察结果让人很怀疑:-) – Pointy