标签: http-headers

`curl -I` 和 `curl -X HEAD` 之间的区别

我正在观看来自http://www.reddit.com的有趣的服务器类型,curl -I http://www.reddit.com当我猜测它curl -X HEAD http://www.reddit.com会做同样的事情时。但事实上,并非如此。

我很好奇为什么。

这是我在运行两个命令时观察到的:

  • curl -I:按预期工作,输出标题并存在。

  • curl -X HEAD: 不显示任何内容,似乎在等待用户输入。

但是,嗅探tshark我看到第二个命令实际上发送了相同的 HTML 查询并收到了正确的答案,但它没有显示它,也没有关闭连接。

curl -I

0.000000 333.33.33.33 -> 213.248.111.106 TCP 59675 > http [SYN] Seq=0 Win=5840 Len=0 MSS=1460 TSV=47267342 TSER=0 WS=6
0.045392 213.248.111.106 -> 333.33.33.33 TCP http > 59675 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 TSV=2552532839 TSER=47267342 WS=1
0.045441 333.33.33.33 -> 213.248.111.106 TCP 59675 > http [ACK] Seq=1 Ack=1 Win=5888 Len=0 TSV=47267353 TSER=2552532839
0.045623 333.33.33.33 …
Run Code Online (Sandbox Code Playgroud)

diff http-headers curl

83
推荐指数
3
解决办法
12万
查看次数

带有 tcpdump 的 http 标头的人类可读格式

我想在 Linux 机器中查看从 Apache(侦听端口 80)到 Tomcat(端口 4080)发送的 HTTP 标头。

根据维基百科

标头字段是明文字符串格式的冒号分隔的名称-值对。

我尝试了以下tcpdump命令的一些变体:

$ sudo tcpdump -lnX dst port 4080 -c 10

11:29:28.605894 IP SOME_IP.33273 > SOME_IP.4080: P 0:49(49) ack 1 win 23 <nop,nop,timestamp 1191760962 509391143>
    0x0000:  4500 0065 3a9f 4000 3f06 0084 628a 9ec4  E..e:.@.?...b...
    0x0010:  628a 9c97 81f9 0ff0 9e87 eee0 144b 90e1  b............K..
    0x0020:  8018 0017 fb43 0000 0101 080a 4708 d442  .....C......G..B
    0x0030:  1e5c b127 4845 4144 202f 6461 7070 6572  .\.'HEAD./dapper
    0x0040: …
Run Code Online (Sandbox Code Playgroud)

http http-headers tcpdump rhel6

80
推荐指数
2
解决办法
18万
查看次数

nginx real_ip_header 和 X-Forwarded-For 似乎是错误的

HTTP标头的维基百科描述X-Forwarded-For是:

X-Forwarded-For:client1、proxy1、proxy2、...

该指令的 nginx 文档real_ip_header部分内容如下:

该指令设置用于传输替换 IP 地址的标头的名称。
在 X-Forwarded-For 的情况下,此模块使用X-Forwarded-For 标头中的最后一个ip 进行替换。[强调我的]

这两种描述似乎相互矛盾。在我们的场景中,X-Forwarded-For标头与所描述的完全一样——客户端的“真实”IP 地址是最左边的条目。同样,nginx 的行为是使用最右边的值——很明显,它只是我们的代理服务器之一。

我的理解X-Real-IP是它应该用于确定实际的客户端 IP 地址——而不是代理。我是否遗漏了什么,或者这是 nginx 中的错误?

而且,除此之外,是否有人对如何使X-Real-IP标题显示最左边的值有任何建议,如 的定义所示X-Forwarded-For

nginx reverse-proxy http-headers

64
推荐指数
3
解决办法
9万
查看次数

如何删除 IIS/ASP.NET 响应头

我有几台 IIS/6.0 服务器,安全部门要求我删除一些根据请求发送到客户端浏览器的响应标头。他们担心通过响应头泄露平台信息。我已从网站的 IIS 配置(X-Powered-By 或某些此类标头)中删除了所有 HTTP-HEADERS。

(我个人确实知道这些信息很容易被发现,即使它是隐藏的,但这不是我的要求。)

我想删除的标题:

  • 服务器- Microsoft-IIS/6.0
  • X-AspNet 版本- 2.0.50727

我也知道 ASP.NET MVC 也发出自己的标头,如果您也知道如何删除它,那会很有帮助。

  • X-AspNetMvc-版本- 1.0

iis asp.net http-headers

48
推荐指数
4
解决办法
12万
查看次数

Shell 命令查看 HTTP 标头

是否有 shell 命令可以查看 HTTP 请求的标头?

例如,我想知道从中检索的标头www.example.com/test.php是什么

我怎样才能做到这一点?

linux shell http-headers

40
推荐指数
5
解决办法
7万
查看次数

如何让 Apache2 解析(无错误).htaccess 中的 Header 指令?

我正在加载带有 500 内部服务器错误的页面,因为我相信 Apache 尚未配置为允许的指令。

我将 AllowOverride 设置为 all,以及一个 .htaccess 文件,包括:

<FilesMatch "\.(eot|ico|pdf|flv|jpg|jpeg|png|gif|svg|swf|ttf|woff)$">
Header set Cache-Control "max-age=31536000, public"
Header set Expires "Wed, 23 Apr 2014 17:00:01 UTC"
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

/var/log/apache2/error.log 有:

[Sat Jul 20 15:12:36 2013] [alert] [client 24.15.83.241] /home/jonathan/.htaccess: Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration
Run Code Online (Sandbox Code Playgroud)

我需要指定什么才能让 Apache2 正确处理“Header”指令?

.htaccess http-headers apache-2.2

40
推荐指数
2
解决办法
5万
查看次数

31
推荐指数
2
解决办法
6万
查看次数

50* 页面的 Nginx add_header

我目前正在尝试让 nginx 在发送某种 50* 错误时向响应添加标头。我已经在 http 块上有一个 add_header 指令,除了它似乎是错误之外,所有请求都会得到尊重。我还在其中一个 vhost 中尝试了以下操作:

location /mediocregopheristhecoolest {
    add_header X-Test "blahblahblah";
    return 502;                                                                                                    
}       
Run Code Online (Sandbox Code Playgroud)

转到该页面会给我一个 502,但没有标题。这只是 nginx 不做的事情,还是我做错了?

nginx http-headers 500-error

29
推荐指数
2
解决办法
1万
查看次数

如何使用 apache 转储整个 HTTP 请求

是否可以通过 apache 转储整个 HTTP 请求?我需要跟踪传入请求的所有 HTTP 标头。怎么做?

http http-headers apache-2.2

28
推荐指数
4
解决办法
5万
查看次数

如何让 nginx 支持 @font-face 格式并允许 access-control-allow-origin?

我已将这些规则添加到mime.types

application/x-font-ttf                ttf;
font/opentype                         otf;
application/vnd.ms-fontobject         eot;
font/x-woff                           woff;
Run Code Online (Sandbox Code Playgroud)

现在,每一个都正确设置了 Content-Type 标头。我现在唯一的问题是 Firefox 需要 Access-Control-Allow-Origin。我用谷歌搜索了这个答案并将其添加到我的服务器指令中:

location ~* \.(eot|ttf|woff)$ {
    add_header Access-Control-Allow-Origin *;
}
Run Code Online (Sandbox Code Playgroud)

但现在我的字体根本没有提供。

相反,error.log报告说它试图在本地文件系统上打开它们..

2010/10/02 22:20:21 [error] 1641#0: *15 open() "/usr/local/nginx/html/fonts/mgopenmodernabold-webfont.woff" 失败 (2: 没有那个文件或目录) ,客户端:69.164.216.142,服务器:static.arounds.org,请求:“HEAD /fonts/mgopenmodernabold-webfont.woff HTTP/1.1”,主机:“static.arounds.org”

任何想法可能与语法有关?我是否需要明确添加一条规则,说不要尝试在本地打开它或什么?

编辑:我认为问题是我现在服务于 2 个不同的地点。而不是我应该在主要的内部进行正则表达式检查,然后提供标题。

nginx http-headers

28
推荐指数
4
解决办法
5万
查看次数