表格GET关键方括号在表格提交时编码

时间:2017-01-02 16:10:54

标签: php html forms nginx url-encoding

当我提交表单时,我的方括号最终编码在网址中,如下所示: http://example.com/myurl?key%5B%5D=something

我正在检查nginx access.log以查看我是否可以在那里看到任何奇怪的内容,但这也是为http://example.com/myurl?key%5B%5D=something记录的单一请求(这让我觉得没有重写)造成这种情况。)

还有什么可能导致这个?不能说我以前曾经发生过这种情况。

在chrome和Edge中都进行了测试,结果相同。

2 个答案:

答案 0 :(得分:2)

  

还有什么可能导致这个?

浏览器。

来自the HTML spec

  

如果字节在0x2A,0x2D,0x2E,0x30至0x39,0x41至0x5A范围内,则> 0x5F,0x61至0x7A
  保留字节

[]U+005B : LEFT SQUARE BRACKETU+005D : RIGHT SQUARE BRACKET,因此不在此范围内。

  

否则

     
      
  1. 设s为由U + 0025 PERCENT SIGN字符(%)组成的字符串,后跟表示十六进制的大写ASCII十六进制数字   有问题的字节的值(必要时填零)。
  2.   
  3. 将字符串s编码为US-ASCII,以便它现在是一个字节字符串。
  4.   
  5. 用s中的字节替换正在处理的名称或值中的字节,保留它们的相对顺序。
  6.   

因此,它们会被%5B%5D

取代

答案 1 :(得分:0)

原来table1不再是这样做的方式(或者从来没有,也不排除自己错了)。

相反,只需使用相同的密钥mykey[]=something,它就会变成一个数组。