美文网首页
js下载pdf文件遇到302且跨域

js下载pdf文件遇到302且跨域

作者: 小遁哥 | 来源:发表于2025-12-15 10:43 被阅读0次

代码中通过原生的XMLHttpRequest发起了A请求,A请求302通过Location字段返回下载链接,在Chrome的开发者工具里,B请求被标红。

但是我看A请求是配置了跨域的

Aaccess-control-allow-credentials true
Aaccess-control-allow-headers
DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,x-client-device-country,x-client-device-language,x-assist-token,X-User-Token,x-language,X-Client-Device-Type,X-Client-Device-Identifier,x-insrc
Aaccess-control-allow-methods.  PUT, GET, POST, OPTIONS, DELETE
Aaccess-control-allow-origin *

这里其实有个伏笔,Aaccess-control-allow-credentials true 和 access-control-allow-origin * 是互斥的。

正常来讲前端是可以手动处理302的,因为上面的配置,response.status是0而不是302,response.headers.get('Location')也拿不到值

最好的结果就是通过window.open打开A链接,只能预览,却无法自动下载pdf

反转来了

不过解决问题的方法却不是我想的那样,虽说前端代码是一行没改。

A接口还是返回302,跨域配置没有变。

只是B请求也就是pdf的地址,Aaccess-control-allow-origin变成了null

在代码逻辑上通过XMLHttpRequest对象请求A接口,设置返回类型是blob,这个很有用。

然后直接通过window.URL.createObjectURL创建链接,参数只有返回,最后通过a标签下载。

代码里里标记返回的内容类型为application/pdf,这没啥用,这个属性正好是浏览器能预览的条件之一

重点

AJAX 请求 A 接口时遇到 302 重定向,最终拿到的 200 响应其实是重定向后的 B 链接返回结果,这是 XMLHttpRequest(AJAX)的默认重定向处理机制导致的

相关文章

  • pdf.js预览pdf文件

    一、下载pdf.js[http://mozilla.github.io/pdf.js/] 二、使用 跨域问题的解决...

  • uni-app及vue浏览器跨域问题解决

    以猫眼电影接口为例: 假设请求接口 遇到跨域问题 vue解决跨域 在项目根目录下新建vue.config.js文件...

  • vue学习笔记(九)跨域请求

    实现跨域请求 vue.config.js文件

  • 2020-07-22 web项目引入PDF.js并添加水印禁止下

    目录web项目引入PDF.js并添加水印禁止下载 下载并引入PDF.js实现预览动态预览PDF文件隐藏打开、下载、...

  • vue-cli本地跨域配置

    开发中调试接口会遇到跨域问题,可以修改根目录下config/index.js文件。 参考 vuejs-templates

  • JS下载PDF文件

    由于需求需要将数据下载为PDF文件,由于性能还有工时考量没有使用后端生成PDF,而是采用js下载PDF文件, 使用...

  • 跨域的三种实现方法

    用JSONP实现跨域 原理: 利用 script 标签引用JS文件时不受是否跨域的影响,在后端支持的情况下,实现跨...

  • 完成vue项目过程中的一些要点

    1、html适配移动端 2、vue实现双向绑定 跨域请求方法 1、jsonp原理利用 可以跨域请求js文件 所以...

  • jQuery实现jsonp

    jsonp本身是专为跨域而诞生的。早期开发者面对跨域没什么好办法,突然有人想到,既然引入js文件是不受跨域限制的,...

  • a标签添加download

    但是有一点要注意,文件不能跨域,如果下载文件处于和当前域不同的域,则改名失败。

网友评论

      本文标题:js下载pdf文件遇到302且跨域

      本文链接:https://www.haomeiwen.com/subject/nesmcstx.html