Articles of http headers

Nginx静静地删除超过1128字节的标题行

我将Nginx设置为uWSGI应用程序(Django应用程序)的反向代理。 由于Django应用托pipe的内容的性质,有时URL会变长。 真的很长。 因此, Referer HTTP头有时也会变长。 这是问题。 如果Nginx超过1128字节(通过试错发现),Nginx将丢弃从客户端接收到的Referer 。 任何1128字节或更小的内容都会传递给上游服务器。 更大的东西被丢弃。 这是一个问题,因为Django的CSRF保护机制需要一个完整的Referer 。 这是我的Nginxconfiguration的相关部分。 文件: location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } 我查看了Nginx的文档,找不到控制客户端标题最大长度的设置。 令人沮丧的是,我甚至开始为Nginx注入源代码,这也没有改变任何有用的东西。 我需要做什么才能让Nginx将Referer修改地传递给上游服务器? 版本信息 Ubuntu 14.04服务器64位 nginx / 1.4.6(Ubuntu) uWSGI 1.9.17.1-debian Django 1.7.0

是否可以使用后端应用程序可以使用的Apache设置SSL / TLS版本HTTP头?

虚拟机上有一项服务需要通过SSLv3(IE6客户端的WinXP)访问专用IP。 几年前,我将该服务移到了该虚拟机上,以便能够为所有其他服务禁用SSLv3。 我想通知SSLv3客户端该服务的“某个时间”该服务将需要TLS 1.1或更高版本。 该通知不得在任何其他客户端显示(业务决策)。 为了达到这个目的,我想把在代理(Apache)上使用的SSL / TLS版本信息注入原始的HTTP请求,让后端应用程序有条件地放置“升级你的系统,恐龙! 基于实际使用的传输层安全方法的通知。 我如何configuration注射? 只有在使用debugging标志编译Apache时,我才能find所需的环境variables,但这在生产中是不可能的。 最终结果应该是Apache Proxy正在注入HTTP请求头“X-TLS-Version:SSL3”(或“X-TLS-Version:TLS12”或类似的语法)。

为特定文件types过期标题

我怎样才能添加expires标题只是为PNG和ico文件?

无法在apache上closuresSNI

当我去: http : //web-sniffer.net/并检查我的网站的标题( https://www.example.org ),我得到一个状态代码200 但是当我使用单选buttonHTTP / 1.0(没有主机头),我得到一个状态代码400(坏请求)。 我的apache日志说:“通过SNI提供的主机名www.example.org,但没有HTTP请求中提供的hostnmae” 我读了,使其工作我需要closures指令“SSLStrictSNIVHostCheck”在我的Apacheconfiguration文件。 我添加了这个指令,但是在制作HTTP / 1.0(没有主机头)的时候,我仍然得到了状态码400。 作为参考,这是我的ports.conf文件: ServerName www.example.org NameVirtualHost *:80 Listen 10.0.0.1:80 <IfModule mod_ssl.c> # If you add NameVirtualHost *:443 here, you will also have to change # the VirtualHost statement in /etc/apache2/sites-available/default-ssl # to <VirtualHost *:443> # Server Name Indication for SSL named virtual hosts […]

nginx条件Accept头

某些移动设备向我们的服务器发送以下不正确的请求: GET / HTTP/1.0 Accept: User-Agent : xxx 空的Accept标头会导致我们的Ruby on Rails服务器返回一个500错误。 在Apache中,以下指令允许我们在将头发送到应用程序RoR服务器之前重写头文件,以便处理破碎的设备: RequestHeader edit Accept ^$ "*/*" early 我们目前正在设置nginx,但是实现相同的解决scheme却很困难。 我们可以设置: proxy_set_header Accept */*; 但是,这似乎必须无条件地完成。 每当试图做: if ($http_accept !~ ".") { proxy_set_header Accept */*; } 它抱怨的消息: "proxy_set_header" directive is not allowed here 因此,使用nginx,在将请求发送到应用程序服务器之前,如何将HTTP Accept头设置为空时设置为*/* ?

我的ISP在做什么魔术?

在尝试设置OpenDNS的时候,并没有使网站过滤真正起作用,我意识到我的ISP正在做所有HTTP请求的恶意软件。 长话短说,如果有一个Host:头,什么IP地址我用什么都不重要,我得到的网站取决于Host:头,没有别的。 即使在请求中指定了HTTP / 1.0,它似乎也会自动使用HTTP / 1.1。 例子: 通过Host: yahoo.com连接到google.com $ echo -e "HEAD / HTTP/1.0\r\nHost: yahoo.com\r\n\r\n" | nc google.com 80 HTTP/1.1 301 Moved Permanently Date: Mon, 02 Jan 2012 10:50:13 GMT Location: http://www.yahoo.com/ Vary: Accept-Encoding Content-Type: text/html; charset=utf-8 Cache-Control: private Age: 0 Server: YTS/1.20.0 Connection: close $ 通过Host: yahoo.com连接到无效的IP地址 $ echo -e "HEAD / […]

IIS 7.5服务器响应标头(UrlScan不起作用)

过去,您可以使用Microsoft的UrlScan来修改标题,并删除显示IIS版本的标题。 这不适用于IIS 7.5,IIS 7.0是支持的最新版本。 有什么办法,我仍然可以删除一些响应标题? 运行安装了IIS7.5的Windows Server 2008。

nginx + @ font-face + Firefox / IE9

只是把我的网站从一个共享主机转移到了Linode的VPS上,而且我对nginx也是全新的,所以如果我错过了一些明显的东西,请不要苛刻^^ 我的WordPress网站在Nginx和MaxCDN上运行得非常好,但我的@ font-face字体(从cdn.domain.com提供)在IE9和FF中停止工作(@ font-face失败的跨源请求。受到限制。) 我GOOGLE了几个小时,并尝试添加以下所有到我的configuration文件: location ~* ^.+\.(eot|otf|ttf|woff)$ { add_header Access-Control-Allow-Origin *; } location ^/fonts/ { add_header Access-Control-Allow-Origin *; } location / { if ($request_filename ~* ^.*?/([^/]*?)$) { set $filename $1; } if ($filename ~* ^.*?\.(eot)|(otf)|(ttf)|(woff)$){ add_header 'Access-Control-Allow-Origin' '*'; } } 当然,每次更改之后我都重新启动了nginx。 不pipe我做什么,标题都不会被发送。 我有默认的Ubuntu的apt-get构buildnginx的默认应该包括头模块…如何检查什么模块安装,或者还有什么可能导致此错误? 更新: 我试过运行curl -I [location-of-the-font] ,它确实返回Access-Control-Allow-Origin: *但是在Chrome的“networking”面板中该标题不可见,并且字体在FF中仍然不起作用&IE9(CSS3117:@ font-face失败的跨源请求,资源访问被限制) – 任何想法可能导致这个?

在nginx上设置CORS标题

地址如http://vpsxxx.ovh.net/g/search?q=ok或http://vpsxxx.ovh.net/so/questions/34738694/how-to-move-items-on-the-screen-for-a-game-using-javascript当从浏览器url栏中尝试它们时, http://vpsxxx.ovh.net/so/questions/34738694/how-to-move-items-on-the-screen-for-a-game-using-javascript是很好代理的 但不是从JS,甚至在添加CORS头后,例如: http : //jsfiddle.net/crl/svmw93a8/1/,http : //jsfiddle.net/crl/svmw93a8/2/ 甚至一个请求的根/像: ajax('http://vpsxxx.ovh.net').then(function(r){ console.log(r) }); 不工作 这里是conf文件: server { listen 80; server_name vpsxxx.ovh.net; # some ovh server location /g/ { proxy_pass http://www.google.com/; } location /so/ { proxy_pass http://stackoverflow.com/; } location / { # I tried putting it before other locations too proxy_pass http://www.google.com/; # added here also, for […]

Apache-2.4.7忽略了响应头Content-Encoding:身份,而不是由PHP设置的Content-Encoding:none

我刚刚意识到我的明显问题(以及我在前面提到的问题中提到的StackOverflow问题中的“解决scheme” Content-Encoding: none )很可能只是由于误解实际上是如何工作的。 请在最后查看我的附录。 在我正在构build的PHP应用程序中,我试图pipe理自己的内容编码协商和压缩。 当我将响应头Content-Encoding从PHP内部设置为gzip或deflate ,Apache尊重这一点。 但是,当我将其设置为identity Apache忽略这一点,并压缩响应。 它似乎只尊重非标准的Content-Encoding: none ,因为我在这个堆栈溢出问题的一些答案和他们的评论中发现。 因此,我现在把它设置为none ,从PHP内部,然后通过.htaccess更改标题: Header edit Content-Encoding ^none$ identity …但这真的感觉像一个丑陋的黑客。 我希望我不必这样做,以防万一我切换服务器,例如。 这是一个已知的问题和/或这种非标准的行为logging在某处? 我似乎无法find任何具体的文件。 我也search了Apache的bug追踪器 ,但只能find一个切线相关的bug报告 ,关于Apache不尊重Accept-Encoding头值。 附录 当我在.htaccess禁用Apache的mod_deflate时(还有其他选项可以做到这一点): SetEnv no-gzip 1 …并在PHP中设置Content-Encoding: identity ,Apache保持这个标题和内容完好,就好了。 因此,这是我认为实际发生的事情: 这不是Content-Encoding: none官方的信号给Apache来禁止压缩( Content-Encoding: bogus ,例如,产生相同的结果),这将解释为什么我找不到任何文档。 相反,它只是一个不是RFC标准的值。 因此mod_deflate保持内容不变,假设它是一些不想要干扰的非标准编码。 所以,当我在PHP中设置Content-Encoding: identity ,mod_deflate可能认为这是一个有效的RFC标准,意味着内容还没有被压缩,而且由于启用了mod_deflate,所以继续压缩它。 此外,如果我将Content-Encoding设置为gzip或deflate ,例如,mod_deflate可能会将其完全保留,或尝试压缩,但压缩algorithm会识别内容已被压缩。 也许有人可以证实这是否是对实际发生的事情的正确解释? 所以,一个可能的解决scheme是要么禁用我的PHP应用程序pipe理的一些选定的文件/path的mod_deflate,要么如果我的内容已经以其他方式压缩了,甚至可以禁用mod_deflate /站点范围/服务器范围。