我必须提交一个HTML表单到第三方网站,其中一个隐藏的字段是一个XML字符串。在发送给第三方之前,XML需要进行转义。
但是,当我将普通XML添加到表单字段时,它会对其进行半转义。因此,当我自己使用HTMLEncode时,部分XML是双重转义的。如何防止从.NET中出现的自动转义。
或者更好的是,如何通过隐藏字段发送转义的XML。
XML
<systemCode>APP</systemCode>对隐藏输入字段的基本赋值
<systemCode>APP</systemCode>当我也对它进行HTML编码时
&lt;systemCode&gt;APP&lt;/systemCode&gt;我能看到发生了什么--但我不知道如何防止它发生?
发布于 2009-05-19 07:58:05
最后,我使用了一个文字,然后对XML字符串执行HTMLEncoding操作,然后将一个HTML form变量分配给文字文本字段。有点像下面这样:
portalReq.Text = "<input type=""hidden"" name=""portalReq"" value='" & HTMLENCODE(RequestXML) & "' />"不是很优雅,但它绕过了这个问题。
发布于 2009-05-06 09:54:17
也不要使用HTMLEncode ,!单独使用它!
类似于:
'Setting value:
hdnField.Value = Server.HtmlEncode("<systemCode>APP</systemCode>")
'Outputs: &lt;systemCode&gt;APP&lt;/systemCode&gt;
'Retrieving encoded value:
Dim escaped as string = Request.Form("hdnField")
'Retrieves: <systemCode>APP</systemCode>
'Retrieving decoded value:
Dim myValue As String = Server.HtmlDecode(Request.Form("hdnField"))
'Retrieves: "<systemCode>APP</systemCode>"发布于 2012-06-09 01:57:34
您不需要担心HTML输出。只需关心表单中提交了哪些数据。HTML是完全转义的还是部分转义的并不重要-无论以哪种方式都会提交相同的数据。
这两个字段:
<input name="xml" value="<systemCode>APP</systemCode>" />
<input name="xml" value="<systemCode>APP</systemCode>" />提交为:
xml=%3CsystemCode%3EAPP%3C%2FsystemCode%3E
这是语言不可知的--这是浏览器行为。当浏览器解析HTML时,它实际上会将这两个字段标准化为具有相同的html。如果查看页面的源代码,您将看到不同输入的源form.innerHTML有所不同,但是如果您读取HTML值,您将看到解析后的HTML值是相同的。
演示:
https://stackoverflow.com/questions/828812
复制相似问题