我有一个表单,其中使用了method="get"
。在表单中,我需要传递CSS文件的URL,但它会对其进行编码,如http%3A%2F%2Fwww...
等。
有没有办法停止对URL进行编码,因为这样会破坏文件。
谢谢
我有一个表单,其中使用了method="get"
。在表单中,我需要传递CSS文件的URL,但它会对其进行编码,如http%3A%2F%2Fwww...
等。
有没有办法停止对URL进行编码,因为这样会破坏文件。
谢谢
这与安全关系不大,更多地是涉及遵循标准:这些符号在任何URI、URL或URN中都具有特殊含义。当您需要将它们用作路径或查询字符串(GET请求为您创建一个查询字符串)的一部分时,您需要对它们进行转义。简单版的转义方法是:将UTF-8字节作为十六进制数并在前面加上reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","
%
符号。在保留字符的情况下,这总是一个UTF-8中的单字节字符,因此以两个十六进制数字的形式进行转义。
<iframe>
元素的target属性中设置了一个URL。该页面必须知道CSS参数、名称以及如何访问该值。只是应用一些隐藏的输入字段,命名为“css”,并不能神奇地改变页面的CSS样式表,除非该页面被编程为这样做。 - Abel不能。编码是为了生成有效的URL。
相反,您可以在接收代码中对该值进行解码(无论您使用哪个平台,在大多数情况下,URL解码都会自动完成)。
XMLHttpRequest
,则可以发送未编码的文本。您可以使用JavaScript完成此操作,但请记得将content-type
设置为text/plain
。content-type: text/plain
出于安全原因,您不能这样做。您必须在接收端收集并解码它。
<script type="text/javascript">
if (history.pushState) { //IE10+
var newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + decodeURIComponent(window.location.search);
window.history.pushState({path:newurl},'',newurl);
}
</script>
这将把一个http://example.com/page.html?path=foo%2Fbar转换回http://example.com/page.html?path=foo/bar