506

Variant Also Negotiates

官方
端点自行协商

506状态代码的一般解释

HTTP 状态代码 506 Variant Also Negotiates 是服务器内部特定问题的指示器,当服务器部署在使用所谓透明内容协商的配置中时,就会出现该问题。这种类型的内容协商用于管理资源的不同版本,这些版本可根据请求客户端的要求(例如不同的语言、文件格式或编码)进行交付。

从本质上讲,506 Variant Also Negotiates 状态代码意味着服务器上存在配置错误,从而导致协商的无限循环。服务器并没有根据客户的偏好选择所请求资源的特定版本,而是将选择本身指向了另一个协商。

一个简单的示例:客户需要一个特定语言的网页。服务器拥有不同语言版本的网站,并尝试选择最合适的版本。但是,如果服务器的配置不正确,本应选择最合适版本的流程可能会转而参考另一轮协商,而不是做出最终选择。

在实践中,这种状态代码很少出现,因为它假定服务器配置和错误条件非常特殊。要解决这一问题,需要对服务器配置进行审查和修正,以确保内容协商能够正确执行,而不会进入无限循环。

HTTP状态代码506的规范

506 Variant Also Negotiates状态代码表明服务器有一个内部配置错误:所选择的变体资源被配置为自己参与透明内容协商,因此在协商过程中不是一个适当的终点。

来源/引自: 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部分。然后,用户将看到以下结果:

状态代码 506 Variant Also Negotiates
概述
URL: https://http-statuscode.com/errorCodeExample.php?code=506
状况: 506 Variant Also Negotiates
那些: Network
IP地址: XX.XX.XX.XX
状态代码 506 Variant Also Negotiates

如何为状态代码506创建你自己的错误页面

使用 "Apache "和 "NGINX "网络服务器,创建你自己的506 Variant Also Negotiates错误页面是相对容易的。

Apache Webserver

网络服务器 "Apache "是互联网上最常见的网络服务器之一。要在 "Apache "中创建自己的506 Variant Also Negotiates错误页面,必须在以下文件中做如下修改。

File: .htaccess
ErrorDocument 506 /errors/506.html

NGINX Webserver

与网络服务器 "Apache "类似,"NGINX "也在互联网上广泛使用。要在 "NGINX "中创建自己的506 Variant Also Negotiates错误页面,必须在以下文件中做如下修改。

File: sites-enabled/default
error_page 506 /506.html;
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
作者: Tony Brüser
作者: Tony Brüser

Tony Brüser 是一位热衷于 HTTP 状态代码的网络开发人员。

LinkedInGitHub