You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt6自定义浏览器下载功能实现遇两类错误求助

问题解决方案

1. CORS错误说明

这个错误是网页端JavaScript的跨域问题,和你的浏览器下载代码无关。download.cnet.com页面中的XMLHttpRequest请求尝试访问https://684d0d47.akstat.io/,但目标服务器没有设置Access-Control-Allow-Origin响应头,导致浏览器同源策略拦截了请求。这属于网站自身的前端问题,无需修改你的浏览器代码。

2. AttributeError错误修复

PyQt6中QWebEngineDownloadRequest的状态枚举被重构到嵌套类State中,你代码里直接访问QWebEngineDownloadRequest.DownloadRequested的写法错误,需要改为QWebEngineDownloadRequest.State.DownloadRequested。

另外还有一个潜在问题:PyQt6的QFileDialog.getSaveFileName返回的是Python原生字符串,而非QString,因此不能调用isEmpty()方法,应该用Python原生的空字符串判断方式if not path:。

修改后的下载管理类代码

class DownloadManagerWidget(QWidget):
    def downloadRequested(self, download: QWebEngineDownloadRequest):
        assert download and download.state() == QWebEngineDownloadRequest.State.DownloadRequested

        # Prompt the user for a file name
        path, _ = QFileDialog.getSaveFileName(self, "Save as", QDir(download.downloadDirectory()).filePath(download.downloadFileName()))
        if not path:
            return

        # Set download directory and file name
        download.setDownloadDirectory(QFileInfo(path).path())
        download.setDownloadFileName(QFileInfo(path).fileName())
        download.accept()

        # Add the download to the download manager
        self.add(DownloadWidget(download))

        # Show the download manager
        self.show()

额外说明

  • 第一个CORS错误不会影响下载功能,只是网页自身的JS报错,可忽略控制台该输出。
  • 修复枚举和字符串判断的问题后,下载请求处理逻辑即可正常运行,不会再触发AttributeError异常。

内容的提问来源于stack exchange,提问作者Faizal Zahid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:55:19