HTML:阻止帖子表单的url编码

HTML:阻止帖子表单的url编码,html,forms,encoding,url-encoding,Html,Forms,Encoding,Url Encoding,我有一个HTML表单,必须发布到一个URL。我希望表单发布一个名为DATA的变量,如下所示: DATA: somevar=someval&somevar2=someotherval 我做这件事有困难。默认情况下,表单对数据进行URL编码,结果是: DATA: somevar%3Dsomeval%26somevar2%3Dsomeotherval 将表单的enc类型更改为“文本/普通”会导致: DATA: somevar=someval SOMEVAR2: someotherval

我有一个HTML表单,必须发布到一个URL。我希望表单发布一个名为DATA的变量,如下所示:

DATA: somevar=someval&somevar2=someotherval
我做这件事有困难。默认情况下,表单对数据进行URL编码,结果是:

DATA: somevar%3Dsomeval%26somevar2%3Dsomeotherval
将表单的enc类型更改为“文本/普通”会导致:

DATA: somevar=someval
SOMEVAR2: someotherval
有没有什么方法可以让我的表单像上面那样发送数据呢?

试试看

更新 如果您在php中使用表单提交,请尝试下面的函数进行解码


不,你不能做你想做的事。你可能不应该尝试。 事实上,您希望在名为data的变量中包含一些数据,这意味着您的POST有效负载(或GET查询字符串)如下所示

DATA=somevar%3Dsomeval%26somevar2%3Dsomeotherval
如果它是(如你所愿)像

这意味着:

数据的值为“somevar=someval”

somevar2的值为“someotherval”

这是因为每个变量的形式为variable_NAME=VALUE,它们之间用“&”分隔

在您最喜欢的浏览器调试器中自己检查这一点(我使用firebug和chrome内置的开发工具)。 所以,问题是:你为什么要这么做?知道帮助你实现目标会更容易


编辑:这个例子是错误的

我不确定你写这篇文章的目的是什么,也不确定阻止文章表单的URL编码是否真的能解决你的问题

但实际上,阻止表单的URL编码是100%可能的,只需添加

enctype="text/plain"
属性到窗体

下面是一个没有enctype text/plain的请求示例,以及另一个有enctype text/plain的请求示例

LMint-PC droope # nc -kl 80 POST / HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 168 %7B%22JobTypeIdentifier%22%3A3%2C%22ScheduledStart%22%3Anull%2C%22ScheduleType%22%3A%22Recurring%22%2C%22JobInputP meters%22%3A%5B%5D%2C%22ignoreParam%22%3A%22=%22%7D^C LMint-PC droope # ^C LMint-PC droope # nc -kl 80 POST / HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Type: text/plain Content-Length: 116 {"JobTypeIdentifier":3,"ScheduledStart":null,"ScheduleType":"Recurring","JobInputParameters":[],"ignoreParam":"="} LMint PC下垂#nc-kl 80 POST/HTTP/1.1 主机:本地主机 用户代理:Mozilla/5.0(X11;Ubuntu;Linux x86_64;rv:26.0)Gecko/20100101 Firefox/26.0 接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8 接受语言:en-US,en;q=0.5 接受编码:gzip,deflate 连接:保持活力 内容类型:application/x-www-form-urlencoded 内容长度:168 %7B%22作业类型标识符%22%3A3%2C%22计划开始%22%3Anull%2C%22计划类型%22%3A%22重复性%22%2C%22作业输入 仪表%22%3A%5B%5D%2C%22信号参数%22%3A%22=%22%7D^C LMint PC下垂#^C LMint PC下垂#nc-kl 80 POST/HTTP/1.1 主机:本地主机 用户代理:Mozilla/5.0(X11;Ubuntu;Linux x86_64;rv:26.0)Gecko/20100101 Firefox/26.0 接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8 接受语言:en-US,en;q=0.5 接受编码:gzip,deflate 连接:保持活力 内容类型:文本/纯文本 内容长度:116 {“JobTypeIdentifier”:3,“ScheduledStart”:null,“ScheduleType”:“Recurtive”,“JobInputParameters”:[],“ignoreParam”:“=”}
我在生成要发布的字符串时没有遇到问题。它是表单本身,通过浏览器进行url编码。这不是一个PHP问题。所以你想在浏览器上显示上面的
数据
字符串(带&),对吗?不,这里没有显示。我正在尝试创建一个表单,该表单发送一个变量“DATA”,其中包含如上所述的未编码字符串。我正在尝试将flash小程序中的表单替换为plan HTML表单。我一直在使用Firefox扩展TampterData来查看请求的外观。flash表单按上述方式发送数据,而服务器拒绝接受任何其他形式的数据…您可以这样做,如果您发现自己正在测试一项服务,并且需要未编码字符来执行攻击,您应该尝试。 LMint-PC droope # nc -kl 80 POST / HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 168 %7B%22JobTypeIdentifier%22%3A3%2C%22ScheduledStart%22%3Anull%2C%22ScheduleType%22%3A%22Recurring%22%2C%22JobInputP meters%22%3A%5B%5D%2C%22ignoreParam%22%3A%22=%22%7D^C LMint-PC droope # ^C LMint-PC droope # nc -kl 80 POST / HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Type: text/plain Content-Length: 116 {"JobTypeIdentifier":3,"ScheduledStart":null,"ScheduleType":"Recurring","JobInputParameters":[],"ignoreParam":"="}