HTTP 请求406如何解决?有截图
Remote Address:223.4.156.22:80
Request URL:http://www.die.com/data/misc/region_data.js
Request Method:GET
Status Code:406 Not Acceptable
Request Headersview source
Accept:text/javascript, application/javascript
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Cookie:s=76c4209248040f971033f6a755a837c8; MLV=1; CUR=CNY; S[MEMBER]=47; vary=7c1b8c502101e09089c008d38da3ad3f4c56de2d50fe6d8b08a206b17a6436ce; Hm_lvt_ea7ddf915b0403f14eb1517f294548a8=1420108845; Hm_lpvt_ea7ddf915b0403f14eb1517f294548a8=1420112503; _ga=GA1.2.1202397504.1420108845; _gat=1; source=null; S[CART_COUNT]=1; S[CART_NUMBER]=1; S[CART_TOTAL_PRICE]=%EF%BF%A5219.00
Host:www.dijoncake.com
RA-Sid:3CC2F472-20141209-011155-3fbd59-3b026e
RA-Ver:2.8.6
Referer:http://www.dijoncake.com/index.php/wap/cart-shipping_edit-true.html
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
X-Requested-With:XMLHttpRequest
Response Headersview source
Content-Length:1313
Content-Type:text/html
Date:Thu, 01 Jan 2015 11:41:23 GMT
Server:Microsoft-IIS/6.0
X-Powered-By:ASP.NET
X-UA-Compatible:IE=EmulateIE7
回复内容:
Remote Address:223.4.156.22:80
Request URL:http://www.die.com/data/misc/region_data.js
Request Method:GET
Status Code:406 Not Acceptable
Request Headersview source
Accept:text/javascript, application/javascript
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Cookie:s=76c4209248040f971033f6a755a837c8; MLV=1; CUR=CNY; S[MEMBER]=47; vary=7c1b8c502101e09089c008d38da3ad3f4c56de2d50fe6d8b08a206b17a6436ce; Hm_lvt_ea7ddf915b0403f14eb1517f294548a8=1420108845; Hm_lpvt_ea7ddf915b0403f14eb1517f294548a8=1420112503; _ga=GA1.2.1202397504.1420108845; _gat=1; source=null; S[CART_COUNT]=1; S[CART_NUMBER]=1; S[CART_TOTAL_PRICE]=%EF%BF%A5219.00
Host:www.dijoncake.com
RA-Sid:3CC2F472-20141209-011155-3fbd59-3b026e
RA-Ver:2.8.6
Referer:http://www.dijoncake.com/index.php/wap/cart-shipping_edit-true.html
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
X-Requested-With:XMLHttpRequest
Response Headersview source
Content-Length:1313
Content-Type:text/html
Date:Thu, 01 Jan 2015 11:41:23 GMT
Server:Microsoft-IIS/6.0
X-Powered-By:ASP.NET
X-UA-Compatible:IE=EmulateIE7
如@yjl所猜测,在IIS中,默认情况下,js对应的MIME type 确实是application/x-javascript
。
参考:http://msdn.microsoft.com/en-us/library/bb742440.aspx,在页面中搜索javascript
解决办法有两个。
- 将请求的
Accpet
字段中加一个application/x-javascript
(我测试通过)。 - 在IIS中给js添加
text/javascript
这个MIME type。(Configure MIME Types IIS 6.0)
这是不支持当前请求中的Accept Headers
,题主检查一下是否限制了或者不支持以下MIME type、encoding算法、locale。
Accept:text/javascript, application/javascript
Accept-Encoding:gzip, deflate, sdch
Accept-Language:zh-CN,zh;q=0.8
我觉得可能是限制了MIME type,限制Accept Headers
的方式很多,具体操作还要看具体情况。
如Kavlez指出的,406的话,问题一般出在Accept, Accept-Charset, Accept-
Encoding, Accept-Language headers 这几个Header。
对于你的情况,应该是Accept:text/javascript, application/javascript
的问题。可能server端用的是“application/x-javascript”,所以有406。你可以试着用Firefox/Chrome的REST Client插件,把你的Request的内容贴进去,然后把Accept:text/javascript, application/javascript
替换成Accept:*/*
(接受任何content types,BTW,这个type不指MIME type),然后试试发送,应该会返回200OK。
可能是文件权限的问题,用的是nginx?
推荐阅读