506状态代码的一般解释
HTTP 状态代码 506 Variant Also Negotiates 是服务器内部特定问题的指示器,当服务器部署在使用所谓透明内容协商的配置中时,就会出现该问题。这种类型的内容协商用于管理资源的不同版本,这些版本可根据请求客户端的要求(例如不同的语言、文件格式或编码)进行交付。
从本质上讲,506 Variant Also Negotiates 状态代码意味着服务器上存在配置错误,从而导致协商的无限循环。服务器并没有根据客户的偏好选择所请求资源的特定版本,而是将选择本身指向了另一个协商。
一个简单的示例:客户需要一个特定语言的网页。服务器拥有不同语言版本的网站,并尝试选择最合适的版本。但是,如果服务器的配置不正确,本应选择最合适版本的流程可能会转而参考另一轮协商,而不是做出最终选择。
在实践中,这种状态代码很少出现,因为它假定服务器配置和错误条件非常特殊。要解决这一问题,需要对服务器配置进行审查和修正,以确保内容协商能够正确执行,而不会进入无限循环。
HTTP状态代码506的规范
来源/引自: 506 Variant Also Negotiates HTTP状态代码由8.1的RFC2295部分指定。
如何用PHP抛出一个506状态代码?
要在一个网页上抛出HTTP状态代码506,可以使用PHP函数http_response_code。其语法如下: http_response_code(506) (PHP 5 >= 5.4.0, PHP 7, PHP 8)
测试506 HTTP状态代码
为了能够在客户端显示HTTP状态代码(本例中为506 Variant Also Negotiates)和其他信息,必须用F12打开开发控制台。然后导航到 "网络 "标签。现在可以打开页面,网站(例如index.php)应该在网络标签中可见。这必须被选中,然后必须选择Herder部分。然后,用户将看到以下结果:
URL: https://http-statuscode.com/errorCodeExample.php?code=506
状况: 506 Variant Also Negotiates
那些: Network
IP地址: XX.XX.XX.XX
如何为状态代码506创建你自己的错误页面
Apache Webserver
网络服务器 "Apache "是互联网上最常见的网络服务器之一。要在 "Apache "中创建自己的506 Variant Also Negotiates错误页面,必须在以下文件中做如下修改。
NGINX Webserver
与网络服务器 "Apache "类似,"NGINX "也在互联网上广泛使用。要在 "NGINX "中创建自己的506 Variant Also Negotiates错误页面,必须在以下文件中做如下修改。
location = /506.html {
root /usr/share/nginx/html;
internal;
}
506状态代码的浏览器兼容性
Chrome | no data |
Edge | no data |
Firefox | no data |
Opera | no data |
Safari | no data |
Chrome Android | no data |
Firefox for Android | no data |
Opera Android | no data |
Safari on iOS | no data |
Internet | no data |
WebView Android | no data |
编程语言中的常量
http.StatusVariantAlsoNegotiates
Response::HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL
:variant_also_negotiates