我似乎找不到足够的文档。我有一个生成一些动态响应的应用程序,但仍然可以从Last-Modified标题中受益——所以我发送了它。
但是,打开if_modified_since(设置为before,根据http://nginx.org/en/docs/http/ngx_http_core_module.html#if_modified_since)似乎对非静态资源没有任何影响。例如,php、python 应用程序。
这是因为 Nginx 不只是查看我的响应Last-Modified标头吗?因为我可以看到它们似乎设置正确,如下所示:
> GET /3.0/view.json?id=2 HTTP/1.1
> Host: xxxxxxxxxxxxx
> Accept: */*
> If-Modified-Since: Sat, 02 May 2015 19:43:02 GMT
>
< HTTP/1.1 200 OK
* Server nginx/1.4.7 is not blacklisted
< Server: nginx/1.4.7
< Date: Fri, 01 May 2015 19:56:05 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< Last-Modified: Fri, 01 May 2015 19:56:05 GMT
Run Code Online (Sandbox Code Playgroud)
或者我忽略了更大的东西?只是好奇是如何 …
默认情况下,ADFS 3 响应包含“X-Frame-Options: DENY”HTTP 标头。这可以防止 ADFS 在 iframe 中运行,因为这为点击劫持攻击提供了机会。
然而,目前我的公司正在实施一个集成,其中应该对此安全规则进行例外处理:某个域上的页面应该能够在 iframe 中嵌入 ADFS。
然而,似乎 ADFS 不允许开箱即用地更改此设置。那么修改这个 HTTP 头的最好方法是什么?
例如 RFC ( https://tools.ietf.org/html/rfc7034#section-2.3.2.3 )中的建议?
想要在框架中呈现所请求内容的页面将其自己的来源信息提供给通过查询字符串参数提供要框架化的内容的服务器。
服务器验证主机名是否符合其标准,以便允许目标资源对页面进行框架化。例如,这可能通过查找允许构建页面的受信任域名白名单来实现。例如,对于 Facebook 的“Like”按钮,服务器可以检查提供的主机名是否与该“Like”按钮预期的主机名匹配。
如果在步骤 #2 中满足正确的条件,服务器会在“X-Frame-Options: ALLOW-FROM”中返回主机名。
- 浏览器强制执行“X-Frame-Options: ALLOW-FROM”标头。
我最近遇到了某种安全设备 (BlueCoat),它要求所有到 Internet 的连接都必须通过它进行代理(你好,中间人),因此使用特殊的 SSL 证书来拦截所有流量。
这阻止了 Git 的正常操作,即使设置了适当的http.proxy和http.sslCAInfo属性以确保 SSL 连接本身有效。
使用环境变量GIT_CURL_VERBOSE=1,我们发现在使用时git clone,会出现HTTP 407(需要代理认证)。Git 正确完成此身份验证,最后,设备返回带有 cookie 标头的 HTTP 200 Set-Cookie。
Git 然后将连接到目标服务器,但没有cookie,导致 HTTP 401。
解决这个问题的方法是设置git配置选项 http.saveCookies=true
问题: 中间代理添加cookies真的是RFC标准允许的吗?
Anthony Rich向 http-state 邮件列表提出了同样的问题,但没有任何回应。他确实注意到在
RFC 2965 HTTP 状态管理机制,3.5 缓存代理角色它说:代理不得在代理响应(请求)中引入自己的 Set-Cookie2 (Cookie) 标头。
但是,取代的 RFC 6265根本不再提及这一点。
我正在使用 Varnish,我不太确定是否还应该删除Server: nginxHTTP 标头。为什么有人需要知道我正在使用 NGINX?可以从响应中删除这个 HTTP 标头还是在某个地方需要它?从安全的角度来看,这样做可能更好?
我在 SF 上的第一个问题,所以如果我写了这篇文章,请原谅我。:)
无论如何,我在我的一台机器上使用 mod_rewrite 使用一个简单的规则重定向到另一台机器上的 web 应用程序。我还在两台机器上设置标题“Access-Control-Allow-Origin”。问题是,当我遇到重写规则时,我丢失了“Access-Control-Allow-Origin”标头设置。
这是第一台机器的 Apache 配置示例:
NameVirtualHost 10.0.0.2:80
<VirtualHost 10.0.0.2:80>
DocumentRoot /var/www/host.example.com
ServerName host.example.com
JkMount /webapp/* jkworker
Header set Access-Control-Allow-Origin "*"
RewriteEngine on
RewriteRule ^/otherhost http://otherhost.example.com/webapp [R,L]
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这是第二个 Apache 配置的示例:
NameVirtualHost 10.0.1.2:80
<VirtualHost 10.0.1.2:80>
DocumentRoot /var/www/otherhost.example.com
ServerName otherhost.example.com
JkMount /webapp/* jkworker
Header set Access-Control-Allow-Origin "*"
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
当我点击时,host.example.com我们看到标题已设置:
$ curl -i http://host.example.com/
HTTP/1.1 302 Moved Temporarily
Server: Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.7e-p1 DAV/2 mod_jk/1.2.26
Content-Length: 0
Access-Control-Allow-Origin: *
Content-Type: text/html;charset=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
当我点击时,otherhost.example.com我们看到它也在设置标题:
$ …Run Code Online (Sandbox Code Playgroud) 是否可以使用内置的 http 标头保存静态 html 文件?那么将它放在任何服务器上都可以工作,包括 http 标头?
如果是这样怎么办?
我正在使用两个系统(都是 nginx 负载均衡器,一个用作备份)。我想添加和使用几个 http 自定义标头。请给出您的建议
例如
upstream upstream0{
#list of upstream servers
server backend:80;
server backup_load_balancer:777 backup;
#healthcheck
}
server{
listen 80;
#Add custom header about the port and protocol (http or https)
server_name _;
location / {
proxy_pass "http://upstream0;#" is included since links are not allowed in the post
}
}
Run Code Online (Sandbox Code Playgroud)
//备份系统
server{
listen 777;
server_name _;
#doing some other extra stuf
#use port and protocol to direct
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个缓存失效系统,所以我需要将 css|js 的缓存设置为永不过期。
我试过这个
location ~* \.(js|css)$ { # |png|jpg|jpeg|gif|ico
expires max;
#log_not_found off; # what's this for?
}
Run Code Online (Sandbox Code Playgroud)
这就是我在萤火虫中看到的:

如您所见,请求仍在进行中,尽管它们只收到“未修改”的响应。但我想完全避免它们,这可能吗?
另外,我已经读到超过 1 年的到期在标准中是或将被视为无效的。真的吗?
编辑
让我完成@DisgruntledGoat 的回答:
我正在使用带有 Apache HTTP 反向代理(带有 的 mod_proxy ProxyRequests Off)的 IIS 网站。我想控制 apache 中的过期标头(不要问),但是 IIS 正在设置标头Expires: -1。
这会导致 mod_expires 忽略该请求,因为它已经有一个值。
我尝试了/sf/ask/555109831/ 中的解决方案,但它不起作用(早期的技巧不起作用)。
如何禁用 IIS 指定 Expires: -1?
或者
我如何强制 mod_expires 覆盖它(因为我使用 apache 作为反向代理,我应该能够做到这一点!)
我在 Linux 上安装了 nginx 服务器。当我使用 curl 发送请求时,Content-Length响应中缺少标头。
1.php 文件是:
<?php
echo "hello";
?>
Run Code Online (Sandbox Code Playgroud)
示例请求是:
curl api.mysite.com/taxi/1.php -i
HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Wed, 17 Sep 2014 06:16:00 GMT
Content-Type: text/html; charset=utf8
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.4-14+deb7u14
Age: 0
X-Cache: MISS from cache.turonnet.uz
Transfer-Encoding: chunked
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
http-headers ×10
http ×5
nginx ×5
apache-2.2 ×2
adfs ×1
cache ×1
cookie ×1
freebsd ×1
html ×1
iis ×1
mod-jk ×1
mod-rewrite ×1
php ×1
proxy ×1
varnish ×1