【问题标题】:How to get a response number of a HTTPS request如何获取 HTTPS 请求的响应号
【发布时间】:2018-04-27 11:23:20
【问题描述】:
我想使用 Linux 命令来获取 HTTPS 请求的响应号,而不是 HTTP 请求。据我目前所知wget和curl可以达到目的。
例如,给定地址https://asunnot.oikotie.fi/vuokrattavat-asunnot/espoo/13874872,我打算使用以下命令:
- 带卷曲:
curl -I https://asunnot.oikotie.fi/vuokrattavat-asunnot/espoo/13874872
- 使用 wget:
wget --spider -S 'https://asunnot.oikotie.fi/vuokrattavat-asunnot/espoo/13874872'
两个请求都得到了HTTP/1.1 405 Not Allowed的响应。但是当我用浏览器尝试地址时,例如Chrome 或 Firefox 等。该页面确实可以毫无问题地显示。
有人可以帮忙吗?怎么可能得到正确的响应号而不是第一个直接的 405?
【问题讨论】:
标签:
linux
shell
curl
https
wget
【解决方案1】:
使用 curl 您需要设置 -A, --user-agent 选项,因为某些 HTTP 服务器/CGI 需要填充标头 User-Agent。
curl -I 'https://asunnot.oikotie.fi/vuokrattavat-asunnot/espoo/13874872' -A "Mozilla/5.0"
输出:
HTTP/1.1 200 OK
Date: Tue, 14 Nov 2017 13:56:11 GMT
Content-Type: text/html
Connection: keep-alive
Server: nginx
Vary: Accept-Encoding
X-DB: 5
X-DW: 0
X-DZ: 93.72.75.166
X-VID: 93.72.75.166:14CDB9B4-DE01-3FAA-AFF5-65BC2F771745
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Cache-Control: private, no-cache, no-store, must-revalidate
Edge-Control: no-store, bypass-cache
Surrogate-Control: no-store, bypass-cache
-A, --user-agent <agent string>
(HTTP) 指定要发送到 HTTP 服务器的用户代理字符串。如果此字段不是,一些做得不好的 CGI 会失败
设置为"Mozilla/4.0"。要对字符串中的空格进行编码,请用单引号将字符串括起来。这个可以
当然也可以使用-H, --header 选项进行设置。
【解决方案2】:
服务器使用 HTTP 代码 405 进行响应,因为它拒绝了您发送的 curl 命令的 User-Agent 标头。这显然是服务器配置或网站应用程序本身的不良行为。服务器应该使用 HTTP 400 进行响应。
无论如何,对于给定的 URL,以下工作正常:
curl -I -H "User-Agent: Mozilla/5.0" <url>