无法加载资源:net :: ERR_CONTENT_LENGTH_MISMATCH

时间:2014-05-07 15:20:01

标签: javascript jquery image google-chrome

此错误消息的含义是什么?如何解决?这是来自谷歌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

enter image description here

但是,当我在新选项卡上打开错误消息旁边的链接时,图像正在加载,这在逻辑上告诉我图像有效且存在。

11 个答案:

答案 0 :(得分:30)

此错误在HTTP标头中公布的数据与通过网络传输的数据之间存在明确的不匹配。

可能来自以下方面:

  1. 服务器:如果服务器有某些模块的错误,这些模块会更改内容但不更新标题中的内容长度或者无法正常工作。在某些时候,节点HTTP代理就是这种情况(参见here

  2. 代理:您和您的服务器之间的任何代理都可以修改请求,而不是更新内容长度标头。

  3. 据我所知,我没有在IIS中看到这些问题,但主要是使用自定义编写的代码。

    如果有帮助,请告诉我。

答案 1 :(得分:24)

甚至可能是由ad blocker造成的。

尝试禁用它或为图像来源的域添加例外。

答案 2 :(得分:17)

Docker + nginx

在我的情况下,问题是nginx docker容器磁盘空间。我有10GB的日志,当我减少这个数量时,它可以工作。

一步一步(新手/新手)

  1. 输入你的容器:docker exec -it container_id bash。

  2. 转到您的日志,例如:/ var / log / nginx。

  3. [可选]显示文件大小:单个文件大小为ls -lh,文件夹大小为du -h

  4. 使用> file_name清空文件。

  5. 有效!

  6. 对于高级开发人员/系统管理员

    使用> 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,
    );
  }

}

我在这里找到了答案:https://stackoverflow.com/a/55341260/1062129

答案 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 的回答,尽管这些似乎可以实现类似的目标。