Html manifest-validator.com上的缓存清单验证程序代理错误
我正在尝试使用URI检查缓存清单文件。它已失败,并显示以下消息:Html manifest-validator.com上的缓存清单验证程序代理错误,html,validation,caching,application-cache,Html,Validation,Caching,Application Cache,我正在尝试使用URI检查缓存清单文件。它已失败,并显示以下消息: Proxy Error The proxy server received an invalid response from an upstream server. The proxy server could not handle the request POST /validate. Reason: Error reading from remote server 我已尝试删除robots.txt文件,以防不允许:/1导致问
Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request POST /validate.
Reason: Error reading from remote server
我已尝试删除robots.txt文件,以防不允许:/1导致问题
是否有其他人遇到此代理错误?
这是我可以解决的问题还是manifest-validator.com的错误?简而言之
此验证器中出现错误的原因是http响应头中缺少内容类型属性。添加一个类似于文本/缓存清单的文件,它就会工作
解释细节
首先,这里是服务器发送的响应头。请注意缺少的内容类型:
robert@robert-ubuntu:~$curl-I-X头http://nucreativetesting.co.uk/cache-test/test003/manifest.appcache
HTTP/1.1200ok
日期:2014年10月7日星期二16:25:59 GMT
服务器:Apache/2.4.9 Unix
最后修改:2014年8月11日星期一13:45:07 GMT
ETag:46c-5005ac34a2331
接受范围:字节
内容长度:1132
为什么会出现代理错误?
您正在使用的验证程序是一个NodeJS项目,由apache Web服务器代理。出现错误的原因是apache等待NodeJ生成响应,但它挂起。一段时间后,它会超时并返回错误
那它为什么挂着?
在该验证器的当前实现中,您可以找到以下代码[1]:
try {
contentType = res.headers['content-type'].split(';')[0];
if ( ['text/plain', 'text/cache-manifest'].indexOf( contentType ) === -1 ) {
callback('ERR_MANIFEST_MIMETYPE');
return;
}
} catch(e) {
// TODO: Debug statement in production, had some strange output in the error logs.
// Should be removed again
console.error('manifest.js: Content-Type');
return;
}
我们看到res.headers['content-type']应该被拆分,但是如果请求头中没有内容类型,这将引发异常,因为res.headers['content-type']未定义。异常本身只是记录到服务器输出中,但不使用其回调函数进行处理。这就是请求挂起直到超时的原因
结论
这可能是一个错误或错误处理的一方,或只是非常不寻常的没有一个内容类型在您的头。我不知道。但它应该与内容类型一起工作
工具书类
[1] :产生错误的代码网站没有问题,只是成功验证了我的错误。也许你可以告诉我们你网页的网址?这个错误,如果它不在网站上,它可能是由服务器上的错误引起的。你也可以通过上传来验证文件。谢谢你的帮助。这是我的一个失败的URI:我相信“通过文件上传验证”只会检查文件语法,因此它不会检测到清单中列出的文件以及服务器上不存在的文件的问题,而这些文件在使用时实际上会破坏应用程序缓存。因此,我想让validatebyuri工作。