在HTTP GET请求中,参数作为查询字符串发送:

http://example.com/page?parameter=value&also=another

在HTTP POST请求中,参数不会与URI一起发送。

价值观在哪里?在请求标头中?在请求主体中?它看起来像什么?


当前回答

在万维网上的CGI编程中,作者说:

使用POST方法,服务器将数据作为输入流发送到程序。。。。。因为服务器将信息传递给该程序作为输入流,它将环境变量CONTENT_LENGTH设置为以字节(或字符)为单位的数据大小。我们可以使用这可以从标准输入中准确读取那么多数据。

其他回答

后置参数有多种方式/格式

表单数据原始数据json文件编码数据文件xml格式

它们由Header中表示为mime类型的内容类型控制。

不能直接在浏览器URL栏上键入。

例如,您可以看到POST数据是如何通过Live HTTP Headers在Internet上发送的。结果会是这样的

http://127.0.0.1/pass.php
POST /pass.php HTTP/1.1

Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.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
DNT: 1
Referer: http://127.0.0.1/pass.php
Cookie: passx=87e8af376bc9d9bfec2c7c0193e6af70; PHPSESSID=l9hk7mfh0ppqecg8gialak6gt5
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
username=zurfyx&pass=password

上面写着

Content-Length: 30
    username=zurfyx&pass=password

将是后值。

POST请求中的默认媒体类型是application/x-wwww-form-urlencoded。这是一种对键值对进行编码的格式。密钥可以重复。每个键值对用&字符分隔,每个键值用=字符与其值分隔。

例如:

Name: John Smith
Grade: 19

编码为:

Name=John+Smith&Grade=19

这被放置在HTTP头之后的请求体中。

值以内容类型指定的格式在请求正文中发送。

通常,内容类型是application/x-wwww-form-urlencoded,因此请求主体使用与查询字符串相同的格式:

parameter=value&also=another

当您在表单中使用文件上载时,您将改用multipart/form数据编码,它具有不同的格式。它更复杂,但你通常不需要关心它看起来是什么样子,所以我不举一个例子,但知道它的存在会很好。

在万维网上的CGI编程中,作者说:

使用POST方法,服务器将数据作为输入流发送到程序。。。。。因为服务器将信息传递给该程序作为输入流,它将环境变量CONTENT_LENGTH设置为以字节(或字符)为单位的数据大小。我们可以使用这可以从标准输入中准确读取那么多数据。