Skip to content

[BUG] OneDrive分享链接驱动,使用webdav客户端下载html文件时会出现416错误 #2874

Description

@virtual-panda

请确认以下事项

  • 我已确认阅读并同意 AGPL-3.0 第15条
    本程序不提供任何明示或暗示的担保,使用风险由您自行承担。

  • 我已确认阅读并同意 AGPL-3.0 第16条
    无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。

  • 我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。

  • 我已确认阅读了OpenList文档

  • 我已确认没有重复的问题或讨论。

  • 我已确认是OpenList的问题,而不是其他原因(例如 网络依赖操作)。

  • 我认为此问题必须由OpenList处理,而非第三方。

  • 我已确认这个问题在最新版本中没有被修复。

  • 我没有阅读这个清单,只是闭眼选中了所有的复选框,请关闭这个 Issue 。

OpenList 版本(必填)

v4.2.4

使用的存储驱动(必填)

onedrive_sharelink

问题描述(必填)

将一个公开、无密码的SharePoint(OneDrive for business)分享链接填入openlist的OneDrive分享链接存储驱动,然后设置webdav策略为本机代理,再使用rclone之类的webdav客户端尝试访问其中的HTML/htm文件,则会收到下面的报错。

让AI检查drivers.go可知,问题似乎源于rangeReadWithRefresh函数,它会判断响应是否有效,无效则尝试刷新token。然而,它的运作逻辑是,如果响应是text/html,则认为响应无效(html很有可能是错误页或登录页),如果用户请求的文件就是一个html,那么文件会被无条件拦截。

随后我编写了第一版PR,在被项目管理者指出问题后用AI编写了第二版PR。第二版PR里有较为详细的解决方案构想和相关实验,并且在我的机器上测试成功了。

我的两个PR目前都被关了,可能是它们有什么重大问题。

日志(必填)

日志来源于rclone的报错,openlist侧未输出相关日志。

2026/07/29 16:00:01 ERROR :***.htm: Failed to copy: failed to open source object: unexpected html response: 416 Requested Range Not Satisfiable
2026/07/29 16:00:01 ERROR : ***.htm: Failed to copy: failed to open source object: unexpected html response: 416 Requested Range Not Satisfiable

配置文件内容(必填)

存储配置:(抱歉我的机器屏幕是720p)
Image

配置文件:

{
  "force": false,
  "site_url": "",
  "cdn": "",
  "jwt_secret": "***",
  "token_expires_in": ***,
  "database": {
    "type": "sqlite3",
    "host": "",
    "port": 0,
    "user": "",
    "password": "",
    "name": "",
    "db_file": "/storage/emulated/0/Android/data/com.openlist.mobile/files/data/data.db",
    "table_prefix": "x_",
    "ssl_mode": "",
    "dsn": ""
  },
  "meilisearch": {
    "host": "http://localhost:7700",
    "api_key": "",
    "index": "openlist"
  },
  "scheme": {
    "address": "0.0.0.0",
    "http_port": 5244,
    "https_port": -1,
    "force_https": false,
    "cert_file": "",
    "key_file": "",
    "unix_file": "",
    "unix_file_perm": "",
    "enable_h2c": false,
    "enable_h3": false
  },
  "temp_dir": "/storage/emulated/0/Android/data/com.openlist.mobile/files/data/temp",
  "bleve_dir": "/storage/emulated/0/Android/data/com.openlist.mobile/files/data/bleve",
  "dist_dir": "",
  "log": {
    "enable": true,
    "name": "/storage/emulated/0/Android/data/com.openlist.mobile/files/data/log/log.log",
    "max_size": 50,
    "max_backups": 30,
    "max_age": 28,
    "compress": false,
    "filter": {
      "enable": false,
      "filters": [
        {
          "cidr": "",
          "path": "/ping",
          "method": ""
        },
        {
          "cidr": "",
          "path": "",
          "method": "HEAD"
        },
        {
          "cidr": "",
          "path": "/dav/",
          "method": "PROPFIND"
        }
      ]
    }
  },
  "delayed_start": 0,
  "auto_memory_limit": 4,
  "min_free_memory": 0,
  "max_block_limit": 0,
  "max_connections": 0,
  "max_concurrency": 64,
  "tls_insecure_skip_verify": false,
  "tasks": {
    "download": {
      "workers": 5,
      "max_retry": 1,
      "task_persistant": false
    },
    "transfer": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "upload": {
      "workers": 5,
      "max_retry": 0,
      "task_persistant": false
    },
    "copy": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "move": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "decompress": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "decompress_upload": {
      "workers": 5,
      "max_retry": 2,
      "task_persistant": false
    },
    "allow_retry_canceled": false
  },
  "cors": {
    "allow_origins": [
      "*"
    ],
    "allow_methods": [
      "*"
    ],
    "allow_headers": [
      "*"
    ]
  },
  "s3": {
    "enable": false,
    "port": 5246,
    "ssl": false
  },
  "ftp": {
    "enable": false,
    "listen": ":5221",
    "find_pasv_port_attempts": 50,
    "active_transfer_port_non_20": false,
    "idle_timeout": 900,
    "connection_timeout": 30,
    "disable_active_mode": false,
    "default_transfer_binary": false,
    "enable_active_conn_ip_check": true,
    "enable_pasv_conn_ip_check": true
  },
  "sftp": {
    "enable": false,
    "listen": ":5222"
  },
  "mcp": {
    "enable": false
  },
  "last_launched_version": "v4.2.4",
  "proxy_address": ""
}

复现链接(可选)

No response

AI生成内容(可选)

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions