cal*_*531 27 apache .htaccess http-headers
Header always set和Header setApache有什么区别?always关键字在设置标题的情况下会发生什么变化?always吗?我见过...
Header always set X-Frame-Options DENY
Run Code Online (Sandbox Code Playgroud)
...以及...
Header always set Access-Control-Allow-Headers "*"
Run Code Online (Sandbox Code Playgroud)
...我有时会听到always关键字的存在确保标题设置正确,或者always通常包含关键字更好.但是,我从来没有找到一个明确的,明确的答案,为什么会这样.
我已经检查了Apache文档mod_headers,只是简单地提到always:
当您的操作是现有标头的函数时,您可能需要指定始终的条件,具体取决于设置原始标头的内部表.始终对应的表用于本地生成的错误响应以及成功响应.另请注意,在某些情况下重复使用这两个条件的指令是有意义的,因为对于现有标头,始终不是onsuccess的超集:
- 您正在为本地生成的非成功(非2xx)响应添加标头,例如重定向,在这种情况下,在最终响应中仅使用始终对应的表.
- 您正在修改或删除由CGI脚本生成的标头,在这种情况下,CGI脚本在对应于始终而不是默认表的表中.
- 您正在修改或删除某些服务器生成的标头,但默认的onsuccess条件未找到该标头.
据我所知,这意味着Header set always确保即使在非200页面上也设置了标题.但是,我设置的HTTP标头Header set似乎总是适用于我的404页面等.我在这里误解了什么吗?
FWIW,我发现了SO帖子,比如Apache的Header配置中"always"和"onsuccess"之间有什么区别?,但唯一的答案并没有真正为我解释清楚.
非常感谢,
Caleb
cov*_*ner 24
Apache总是设置Header和Header设置有什么区别?
正如手册中引用的一点所说,没有'总是',你的补充只会在成功的反应中出现.
但这也包括通过mod_proxy和其他类似处理程序"成功"转发错误,这些处理程序大致像代理一样.是什么产生了您发现不同意手册的404?本地文件上的404肯定与引用位描述的行为相同.
也就是说,always关键字在设置标题的情况下会发生什么变化?
Apache的API保留了与每个请求,标头和err_headers相关联的两个列表.如果服务器遇到处理后者请求的错误,则不使用前者.
我应该总是使用始终设置标题吗?
这取决于它们的意义.假设您设置的Cache-Control标头与您预期为某些资源提供的服务相关.现在让我们假设您实际上正在提供类似400或502的东西.您可能不希望缓存!
有什么理由不去吗?
往上看.
- / -
手册中还有一点没有引用,它解释了错误代码的代理或CGI,但没有解释Apache正在为以下内容生成错误响应:
可选的条件参数确定此指令将针对哪个响应头的内部表.尽管名称如此,但onsuccess的默认值不会将操作限制为具有2xx状态代码的响应.
在此条件下设置头仍在使用时,例如,一个请求被成功代理或CGI产生,即使它们已经产生一个失败的状态码.
| 归档时间: |
|
| 查看次数: |
12712 次 |
| 最近记录: |