此错误消息的含义是什么?如何解决?这是来自谷歌Chrome v33.0的控制台,在Windows 7上。
无法加载资源:net :: ERR_CONTENT_LENGTH_MISMATCH http://and.img.url/here.png
我正在尝试使用jQuery更改图像'src
属性。例如像这样(简化):
$('.image-prld').attr('src', someDynamicValue);
页面上有大约30张图片。每次重新加载页面时,随机图像都会出现上述错误。但有时它对所有图像都有效,没有任何错误。
发生此错误时,特定图像显示为this:
但是,当我在新选项卡上打开错误消息旁边的链接时,图像正在加载,这在逻辑上告诉我图像有效且存在。
答案 0 :(得分:30)
此错误在HTTP标头中公布的数据与通过网络传输的数据之间存在明确的不匹配。
可能来自以下方面:
服务器:如果服务器有某些模块的错误,这些模块会更改内容但不更新标题中的内容长度或者无法正常工作。在某些时候,节点HTTP代理就是这种情况(参见here)
代理:您和您的服务器之间的任何代理都可以修改请求,而不是更新内容长度标头。
据我所知,我没有在IIS中看到这些问题,但主要是使用自定义编写的代码。
如果有帮助,请告诉我。
答案 1 :(得分:24)
甚至可能是由ad blocker造成的。
尝试禁用它或为图像来源的域添加例外。
答案 2 :(得分:17)
在我的情况下,问题是nginx docker容器磁盘空间。我有10GB的日志,当我减少这个数量时,它可以工作。
输入你的容器:docker exec -it container_id bash。
转到您的日志,例如:/ var / log / nginx。
[可选]显示文件大小:单个文件大小为ls -lh
,文件夹大小为du -h
。
使用> file_name
清空文件。
有效!
使用> file_name
或类似内容清空您的nginx日志。
希望有所帮助
答案 3 :(得分:1)
这可能是由于磁盘已满(Ubuntu / Nginx)引起的。
我的情况:
答案 4 :(得分:0)
在我的情况下,我正在修改将标头(使用Fiddler)附加到https
请求的请求,但我没有将其配置为decrypt https traffic.
答案 5 :(得分:0)
在我的情况下,我错误地计算了我在标题中公布的Content-Length。我正在为文件提供Range-Requests,我错误地在Content-Length中发布了文件大小。
我通过将Content-Length设置为我发送回浏览器的实际范围来解决问题。
因此,如果我正在回答正常请求,我将Content-Length设置为filesize。如果我正在回答范围请求,我将Content-Length设置为所请求范围的实际长度。
答案 6 :(得分:0)
在我的情况下,是代理问题(从Nginx代理到清漆缓存的请求)引起了问题。我需要在代理定义中添加以下内容
class _ItemListWidgetState extends State<ItemListWidget> {
@override
Widget build(BuildContext context) {
/// iterating through the list items from the store and displaying in a listView.
return ReorderableListView(
header: Text('Sample Header'),
children: widget.model.items.map((Item item) => ListTile(
key: ObjectKey(item),
title: Text(item.body),
leading: Checkbox(value: item.completed, onChanged: (b) {
widget.model.onCompleted(item);
}),
trailing: IconButton(
icon: Icon(Icons.more_horiz),
onPressed: () => _itemsModalBottomSheet(context, () => widget.model.onRemoveItem(item)),
),
)).toList(),
onReorder: widget.model.onReorderItem,
);
}
}
答案 7 :(得分:0)
如果这与docker相关,请尝试使用同一图像中的docker run
命令停止错误的容器并启动新的容器。
答案 8 :(得分:0)
如果有人使用docker + nginx解决该问题,则可能是权限。 Nginx日志显示错误:
2019/12/16 08:54:58 [crit] 6#6: *23 open() "/var/tmp/nginx/fastcgi/4/00/0000000004" failed (13: Permission denied) while reading upstream, client: 172.24.0.2, server: test.loc, request: "GET /login HTTP/1.1", upstream: "fastcgi://172.28.0.2:9001", host: "test.loc"
在nginx容器中运行(路径可能有所不同):
chown -R www-data:www-data /var/tmp/nginx/
答案 9 :(得分:0)
这对我有用。
const conn = mongoose.createConnection(config.get('mongoURI'));
conn.once('open', () => {
gfs = Grid(conn.db, mongoose.mongo);
gfs.collection('uploads');
})
const storage = new GridFsStorage({
url: config.get('mongoURI'),
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(15, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads'
};
resolve(fileInfo);
});
});
}
});
我在 nginx proxy.conf 文件中增加了上述参数的大小。 在这里,nginx 充当我基于微服务的应用程序的代理。
答案 10 :(得分:0)
运行 docker system prune -a
对我有用。我没有运气重建我的容器或遵循@mrroot5 的回答,尽管这些似乎可以实现类似的目标。