【问题标题】:curl command return http/1.1 406 not acceptable errorcurl 命令返回 http/1.1 406 不可接受的错误
【发布时间】:2012-01-29 00:14:50
【问题描述】:

我使用下面的命令行 curl 来了解我的网站是否支持压缩和缓存

curl --head --compress http://www.mysite.com

它返回以下结果

Http://1.1 406 Not Acceptable
Date: Wed, 28 Dec 2011 07:41:32 GMT
Server: Apache
Content-Type: text/html; charset-iso-8859-1

你怎么看这个问题? 谢谢

【问题讨论】:

  • 你为什么使用curl来检查你的网站是否支持压缩和缓存。它们都是 Apache 发送的标头。
  • 不支持压缩。管理服务器声称确实如此,我必须证明他
  • 为什么不直接探测 php.ini?它有一些可用的功能,例如ini_get
  • 如何使用ini_get 知道并证明服务器不支持压缩?

标签: php linux apache curl compression


【解决方案1】:

在某些情况下,伪装代理解决了这个问题,方法是:

curl -A "Mozilla/4.0"

同样使用libcurl C-API:

curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0");

【讨论】:

  • 我必须使用完整的代理字符串“Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36”, “Mozilla/5.0” 没有不行。谢谢!
  • 对我来说,伪造的代理完全按照提供的方式工作。谢谢!
【解决方案2】:

来自 HTTP/1.1 标准:

请求标识的资源只能生成 具有不可接受的内容特征的响应实体 根据请求中发送的接受标头。

除非它是一个 HEAD 请求,否则响应应该包含一个实体 包含可用实体特征和位置的列表 用户或用户代理可以从中选择最合适的一个。

所以放下--head,你应该看看有什么问题。

406 可能只是证明你是对的——服务器不支持压缩。 :)

【讨论】:

  • 当我删除 --head 时,它会显示以下几行 <html></head> <title>406 not acceptable </title> </head></body> <h1>not acceptable</h1> . . 我也在标题和 h1 标签中使用 utf-8 字符
  • 我认为它会显示更多。无论如何,406 的基本意思是“你要了我不能给你的东西”。 curl --compress 发送 Accept-Encoding: deflate, gzip - 显然您的服务器无法提供该服务。简而言之:这个回复证明你的系统管理员错了,服务器不支持压缩。您可以使用 curl 的 -v 标志来获得更详细的输出,包括请求标头。这可能有助于说服您的系统管理员。
  • 当我为我的网站使用 phpinfo() 时,它显示了这个变量环境 HTTP_ACCEPT_ENCODING gzip,delate
猜你喜欢
  • 2015-07-10
  • 2014-11-18
  • 2015-03-17
  • 2023-02-23
  • 2011-11-12
  • 2020-09-19
  • 1970-01-01
  • 2014-01-27
  • 2013-12-07
相关资源
最近更新 更多