uni-app中使用 uni.downloadfile下载文件报跨域错误和Refused to get unsafe header "content-disposition" 错 作者:马育民 • 2024-02-19 23:44 • 阅读:10166 # 解决方式一 编写过滤器,对下载文件进行过滤,增加 **跨域 响应头**: ``` package top.malaoshi.netdisk.filter; import top.malaoshi.util.StringUtil; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; /** * 解决 使用 uni.download() 下载图片跨域的过滤器 */ @WebFilter("/upload/*") public class F0UploadFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) servletRequest; HttpServletResponse resp = (HttpServletResponse) servletResponse; String servletPath = req.getServletPath(); String fileName = StringUtil.lastSlice(servletPath, "/", false); resp.setHeader("Access-Control-Allow-Origin","*"); resp.setHeader("Access-Control-Allow-Methods","GET"); /* 设置Access-Control-Expose-Headers暴露Content-Disposition响应头 否则uniapp下载时要获取Content-Disposition,导致出现Refused to get unsafe header错误 */ resp.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); // 对文件名进行编码,对于标准英文名来说,没有任何变化 String fileNameEncode = URLEncoder.encode(fileName, "UTF-8"); resp.addHeader("Content-Disposition", "attachment;filename=" + fileNameEncode); filterChain.doFilter(servletRequest, servletResponse); } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } } ``` 参考: https://wenku.csdn.net/answer/3a2y795u05 # 解决方式二 如果部署到 Nginx ,图片通过 nginx 跨域,在 Nginx 增加响应头 在网站的cofig文件配置如下: ``` location ~ ..(gif|jpg|jpeg|png|bmp|swf)$ { add_header Access-Control-Allow-Origin ; add_header Access-Control-Allow-Headers X-Requested-With; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; expires 30d; error_log off; access_log /dev/null; } ``` 参考: https://ask.dcloud.net.cn/article/38944 原文出处:http://malaoshi.top/show_1IX7BJTgCx9o.html