如何在 HTTP GET 请求中发送原始数据?

oro*_*aki 5 post get http xmlhttprequest urlencode

http://alx3apps.appspot.com/jsonrpc_example/的示例中,当我单击提交按钮时,我注意到(通过使用 Firebug)我的浏览器提交了源代码:

{"params":["Hello ","Python!"],"method":"concat","id":1}
Run Code Online (Sandbox Code Playgroud)

不是发布参数(例如json=[encoded string from above]),而是发布具有上述值的原始字符串。

是否有一种广泛接受的方法可以通过 GET 请求复制它,或者我是否只需要对相同的字符串进行 urlencode 并将其包含为http://www.example.com/?json=%7b%22params%22%3a%5b%22Hello+%22%2c%22Python!%22%5d%2c%22method%22%3a%22concat%22%2c%22id%22%3a1%7d?我知道一些较旧的浏览器无法处理超过 250 个字符的 URI,但我对此表示同意。

Dee*_*ter 4

除了标头之外,GET 请求通常不会以任何其他方式传输数据,因此如果您希望使用 GET,则应该传递 URL 中编码的字符串。

POST http://alx3apps.appspot.com/jsonrpc_example/json_service/ HTTP/1.1
Host: alx3apps.appspot.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Content-Type: application/json-rpc; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://alx3apps.appspot.com/jsonrpc_example/
Content-Length: 55
Pragma: no-cache
Cache-Control: no-cache

{"params":["Howdy","Python!"],"method":"concat","id":1}
Run Code Online (Sandbox Code Playgroud)

在正常形式的帖子中,标头Content-Type: application/x-www-form-urlencoded让服务器知道期望的格式为 key=val 格式,而您链接的页面发送Content-Type: application/json-rpc; charset=UTF-8。在标题(以空行结束)之后是指定格式的数据。