【发布时间】:2011-10-03 16:15:09
【问题描述】:
我需要将 POST 请求正文中的原始数据发送到 Web 服务。我可以使用 HTML 表单完成此操作吗?
使用标准 HTML 输入字段似乎不可避免地会生成 <name_of_input_field>=<DATA> 形式的 POST 正文,而我只想发布 <DATA>。
我是否需要借助 javascript 来执行此请求?
【问题讨论】:
我需要将 POST 请求正文中的原始数据发送到 Web 服务。我可以使用 HTML 表单完成此操作吗?
使用标准 HTML 输入字段似乎不可避免地会生成 <name_of_input_field>=<DATA> 形式的 POST 正文,而我只想发布 <DATA>。
我是否需要借助 javascript 来执行此请求?
【问题讨论】:
我可以使用 HTML 表单完成此操作吗?
没有。
表单可以发送 application/x-www-form-urlencoded 或 multipart/form-data 数据。
如果您想使用不同的数据格式,您必须开始查看 JavaScript 和 XHR(并遵守同源政策等)。
您最好编写服务器端代码来接受上述编码之一——不乏可以解码它们的库。
【讨论】:
这里有潜在的黑客攻击。如果您的数据中包含自然的“=”,或者您可以对其进行修改以便以某种无害的方式添加“=”,您可以:
我了解这项技术的来源:
https://systemoverlord.com/2016/08/24/posting-json-with-an-html-form.html
【讨论】:
enctype 时,names 仍然是 URI 编码的(values 正确地不是)。如果可以的话,最好使用数据的值而不是名称,然后在服务器上将其删除。无论哪种方式,您都需要一些支持 IE 的服务器代码,如果不剪切它,您需要先解码 = 之前的所有内容
text field (/textarea ?) 值。 javascript 是如何获得它的——你给这个字段一个 id 吗?那不会改变表单数据吗?
chrome developer tools | Network|Headers|Form Data hidden 表单字段名称(我使用json 作为隐藏字段)仍然显示:json: { "eventType": "person_sopId", "badgeId" : 7, "sopId": 100 }' 所需的结果有 just json 有效载荷而不是 name = json 包括