昌平网站设计:什么是HTTP错误406不可接受

2019.07.09 昌平网站建设

112

昌平网站设计不管是什么原因造成的,服务器错误无疑是令访问您的网站的用户和您作为网站所有者令人沮丧。虽然有些HTTP错误比其他错误更常见,但是对Web服务器可能抛给您的任何错误做好准备总是很好的。幸运的是,HTTP错误406不像404那样常见,500或者301 HTTP代码,但您可能仍然会遇到它,当您这样做时,原因通常是以下两种之一:内容类型协商问题或误解或mod_security规则设置问题,后者是两者中最常见的。

本文揭示了服务器为什么返回http错误406不可接受你能做些什么来解决根本的问题。

由接受标头问题引起的http错误406

当客户端(web浏览器)希望加载网页时,首先需要获得服务器的IP地址..为此,它进行DNS查找,将domain.com转换为IP地址。DNS可能返回多个IP地址;在这种情况下,它将选择第一个IP地址,并建立到该IP地址的端口80或443的TCP套接字连接。成功连接后,它将写入HTTP请求数据(例如get/HTTP/1.1,host:Domain.com,Accept:text/html,User-Agent:Mozilla…)..

昌平网站设计

服务器在接收到请求后,可能会返回406状态代码,指示它不能以客户端接受标头中提到的任何格式发送数据。在现实生活中,这种情况很少发生,因为大多数Web浏览器都会接受请求的接受头中的*/*所发出的任何信号。这是最后的努力,客户端通常会发出他们想要接收的内容类型的信号,并定义一个优先级列表,*/*us通常具有最低优先级(q=0.5)。例如,客户端发送请求,因为html中有一个IMG标记,它将向服务器发出信号,表示它首先需要一个图像。AccepHeader可以有各种类型(接受编码、接受字符集、接受范围、接受语言等等),指定它们接受的数据的特征。例如,Web浏览器可能只能处理HTML或GIF文件,因此,如果Web服务器无法以客户“理解”的任何这些格式返回数据,它将显示一个406不可接受的错误代码。

相反的情况也可能发生:如果Web服务器不知道请求扩展名,它可能会搜索安装在它上的另一个应用程序,看看它是否能够提供文件。如果没有任何其他应用程序可以提供该文件,它将返回一个406不可接受的错误。当服务器不确定所请求文件的MIME类型时,它还将返回406。这可能非常有用,因为它可以防止通常保存在异域文件扩展名中的敏感信息泄漏,如.ini、.kdb、.PASS等。

怎么解决?

如果406状态代码可能是内容类型协商不匹配的问题,则需要实现某些更改,以便服务器具有哑剧与请求扩展关联的类型。

如果您正在运行基于IIS的Web服务器,则需要确保IIS识别您的扩展。只需编辑MIME类型,就可以向IIS添加新的扩展。例如,您可以添加*.less并将其MIME类型设置为text/css。这是服务器返回的406不可接受的HTTP错误的最直接解决方案。如果将Apache作为Web服务器运行,则可以在.htaccess文件或Virtualhost配置中添加MIME类型。.less文件的一个示例是“AddType text/CSS.less”。

或者,您可以更改浏览器的Accept标头,以便它知道服务器处理的MIME类型。对Accept标头进行更改也会有所帮助,但是,与服务器端的更改相比,这是一个不太可行的解决方案。昌平网站设计

http错误406是由mod_security规则设置问题引起的

另一种可能会遇到406状态代码的场景是在Apache服务器上启用mod_security规则时。它是一种Web应用程序防火墙(WAF)默认情况下,在某些网站托管提供商的托管帐户上启用程序。例如,InMotion托管是否在所有基于Apache的托管帐户上启用了mod_security,以保护web应用程序免受XSS或SQL注入等常见攻击,因为这些类型的安全漏洞很容易进入Web应用程序。mod_security持续扫描服务器、传入请求和传出响应是否违反了它设置的规则。如果发生违反mod_security中设置的规则的操作(由站点、页面或函数引起的违规行为),服务器将发送一个406不可接受的错误。

怎么解决?

为每个域单独禁用mod_security或禁用mod_security中的某些规则将有助于修复错误。如果你的托管账户随cPanel而来,关闭mod_security的最简单方法是通过modsec Manager插件。或者,您可以在SSH中使用命令行。如果您想禁用特定的规则,或者您的托管帐户没有提供禁用/启用mod_security的选项,您需要与您的Web主机的客户支持团队联系以帮助您。昌平网站设计

结语

虽然HTTP错误不常见,但406不可接受的错误可以到处出现,当它发生时,很可能是由mod_security规则设置问题而不是接受头问题引起的。如果你不习惯单独处理这个问题,不要犹豫地联系你的网站所在的网站托管公司,因为他们可以很容易地找到问题的根源,并为你修复错误。


热门分享

最新案例

寒枫总监

来电咨询

18868949445

微信咨询

寒枫总监

TOP