据我了解,打开带有 URL 的新窗口本质上会发出对该指定 URL 的 GET 请求。我有一个 URL,当使用 window.open() 打开时,会触发浏览器下载。但是,当我通过 AJAX 发出实际的 GET 请求时,为什么响应没有触发浏览器下载?
最佳答案
您只能通过将浏览器选项卡重定向到下载 URL 来触发浏览器下载,无法使用 AJAX 请求来执行此操作。
当浏览器(如:浏览器选项卡中加载的当前 URL)访问 URL 时,浏览器有责任处理响应。对于文件下载,处理响应的适当操作是显示下载对话框。但是,当您通过 AJAX 执行 GET 请求时,处理响应是您的责任,而不是浏览器的责任。响应可能包含任何数据,大多数时候浏览器甚至无法理解这些数据的含义。
<小时/>如果您想要实现的是延迟下载开始(如 SourceForge 和其他人所做的那样)或向您显示下载后页面然后开始下载,这可以通过重定向到下载后页面来实现,并在那里启动一个 Javascript 计时器,然后将浏览器(不仅仅是 AJAX,还有 window.location
)重定向到下载 URL。浏览器通常处理此问题的方式是,下载后页面将保持加载状态,并且您将看到一个下载对话框。
关于javascript - 使用 window.open(url ,"_self") 打开下载窗口,但不打开 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33786773/