xmlhttprequest 请求发送数据中的 html 实体编码限制
在使用 xmlhttprequest 发起 post 请求时,通过 setrequestheader 方法设置 content-type 为 application/x-www-form-urlencoded 时,发送的数据会被编码成 url 编码格式。
在这种格式中,html 实体会被编码,使用 < 和 > 来分别表示 < 和 >. 然而,为了确保数据能够正确发送,需要确保这些实体之间没有空格。
案例说明
在给定的示例中,如果 < 和 > 之间有空格,则发送的数据类似于:
var data = "a=a&b=" + escape("< row id='1'>< /row>");
在这种情况下,xmlhttprequest 会成功发送数据。
问题原因
然而,如果 < 和 > 之间没有空格,则发送的数据类似于:
var data = "A=a&B=" + escape("<row id='1'></row>");
这时,xmlhttprequest 会发送失败,提示危险字符。这是因为 url 编码格式需要 < 和 > 之间没有空格,否则会被视为无效的实体。
因此,在使用 xmlhttprequest 发送 html 实体时,需要确保这些实体之间没有空格。