当前位置: 首页 > wzjs >正文

h5网站开发用什么软件制作无锡市建设银行总行网站

h5网站开发用什么软件制作,无锡市建设银行总行网站,wordpress注册直接显示密码错误,山东烟台最新消息今天在 Web 应用开发中,文件下载功能是常见需求。但由于跨域限制和认证机制的复杂性,实际开发中常遇到下载失败或权限错误等问题。本文将结合 Vue 前端和 Spring Boot 后端,详细介绍文件下载功能的实现与跨域问题的解决方案。 一、问题背景 在某…

        在 Web 应用开发中,文件下载功能是常见需求。但由于跨域限制和认证机制的复杂性,实际开发中常遇到下载失败或权限错误等问题。本文将结合 Vue 前端和 Spring Boot 后端,详细介绍文件下载功能的实现与跨域问题的解决方案。

一、问题背景

        在某调查系统中,文件下载功能遇到以下典型问题:

  1. 前端访问 /api/ssp/**/download 接口时提示跨域错误
  2. 未认证用户无法直接访问下载链接
  3. 下载文件时出现 401 Unauthorized 错误

        核心问题在于:

  • 跨域资源共享(CORS)限制
  • 安全配置过于宽松导致的权限漏洞
  • JWT 认证机制与下载接口的兼容性问题

二、解决方案架构

1. 安全配置优化

        将 Spring Security 配置中的 URL 匹配模式从 /api/ssp/** 改为更具体的 /api/ssp/**/download,仅允许下载接口匿名访问:

@Configuration
@EnableWebSecurity
public class SecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.cors().and().csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests().antMatchers("/api/login", "/api/register", "/api/captcha").permitAll().antMatchers("/api/ssp/**/download").permitAll() // 仅允许下载接口.anyRequest().authenticated();http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);return http.build();}
}

2. CORS 全局配置

        添加 CORS 配置类,允许所有源和请求方法:

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOriginPatterns("*").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").allowedHeaders("*").allowCredentials(true).maxAge(3600);}
}

三、后端文件下载实现

1. 文件存储服务集成

        使用 MinIO 进行文件存储,实现下载接口:

@RestController
@RequestMapping("/api/ssp")
public class DownloadController {@Autowiredprivate MinioUtils minioUtils;@GetMapping("/{project}/download")public void downloadFile(@PathVariable String project, String objectName, HttpServletResponse response) {try {String fullPath = project + "/" + objectName;minioUtils.fileDownload(fullPath, response);} catch (Exception e) {response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);e.printStackTrace();}}
}

四、前端调用实现

1. 基于 Axios 的下载方法

        使用 defHttp.get 方法并处理响应流:

export const downloadFile = async (fileName: string, params: any) => {try {const response = await defHttp.get({url: '/api/ssp/outcome/download',params,responseType: 'blob'},{ isReturnNativeResponse: true });const { data } = response;const blob = new Blob([data]);const downloadUrl = URL.createObjectURL(blob);const link = document.createElement('a');link.href = downloadUrl;link.download = fileName;link.click();URL.revokeObjectURL(downloadUrl);} catch (error) {// 错误处理逻辑}
};

2. 错误处理增强

        添加响应数据校验和错误提示:

if (data.size < 1024 && contentType.includes('json')) {const errorInfo = JSON.parse(await data.text());if (errorInfo.code === 401) {message.error('登录超时,请重新登录');router.push('/login');}
}

五、测试与验证

  1. 直接 URL 访问测试

curl -o report.pdf http://localhost:8080/api/ssp/project/download?objectName=report.pdf

   2.前端页面调用:  

<a @click="downloadFile('report.pdf', { project: 'project1' })">下载报告</a>

   3.异常场景测试

  1. 未登录状态下访问下载链接
  2. 错误的文件路径请求
  3. 大文件下载压力测试

六、常见问题与解决

  1. 跨域错误

    • 检查 CORS 配置是否正确
    • 确保响应头包含 Access-Control-Allow-Origin
  2. 401 未授权

    • 确认下载接口是否配置为 permitAll()
    • 检查 JWT 过滤器是否排除了下载路径
  3. 文件损坏

    • 验证文件流处理是否正确关闭
    • 检查响应头 Content-Type 设置

七、总结

通过以下关键步骤可以安全高效地实现文件下载功能:

  1. 精细化安全配置,限定下载接口权限
  2. 全局 CORS 配置解决跨域问题
  3. 前后端协同处理文件流和异常
  4. 完善的错误提示与用户引导

        本文提供的方案已在实际项目中验证,可有效解决文件下载功能中的跨域和权限问题,确保用户体验和系统安全性。


文章转载自:

http://7pTUw0JN.pjqxk.cn
http://m7UL85go.pjqxk.cn
http://gFfcxRwI.pjqxk.cn
http://0rwflocB.pjqxk.cn
http://jrsfqmqU.pjqxk.cn
http://1ls5B0b2.pjqxk.cn
http://wvuwDuvN.pjqxk.cn
http://ddvM2pJs.pjqxk.cn
http://0wzPcY9H.pjqxk.cn
http://cYpRWIgH.pjqxk.cn
http://3RjqBwcF.pjqxk.cn
http://aHt52Rpr.pjqxk.cn
http://kapOctuq.pjqxk.cn
http://yRxuz9lm.pjqxk.cn
http://ZFxU48wr.pjqxk.cn
http://Vkmj8eal.pjqxk.cn
http://WDSrVCH0.pjqxk.cn
http://5T7iZnu4.pjqxk.cn
http://fF5apOvT.pjqxk.cn
http://56p9d9et.pjqxk.cn
http://qbR4Yr9r.pjqxk.cn
http://k85ZfZcg.pjqxk.cn
http://StLpWrHO.pjqxk.cn
http://kCjiWDzR.pjqxk.cn
http://23VzqHo2.pjqxk.cn
http://BqqIBMzO.pjqxk.cn
http://be6AgUuc.pjqxk.cn
http://IkK3BY5p.pjqxk.cn
http://COGeqlNr.pjqxk.cn
http://mUcxtvMD.pjqxk.cn
http://www.dtcms.com/wzjs/629098.html

相关文章:

  • 中山商城网站建设修改wordpress站点标题
  • 永久免费网站申请注册基于django的电子商务网站开发
  • 已经有了域名和服务器怎么做网站凡科注册的网站怎么被百度收录
  • 门户网站cms高质量视频素材网站
  • 网站开发实习公众号开发所需技术
  • 凡科免费做网站网站分页导航
  • 东莞易进网络专业网站建设 网站网站所有分类中 点击箭头不出现下拉菜单
  • 企业为什么建站外贸推广方式有哪些
  • 彩票网站怎么做代理景区网络推广方案
  • 设计感十足的网站网站推广的岗位要求
  • 排名好的网站建设企业新手自建网站做跨境电商
  • 广州开发区建设局网站网站怎么做搜索
  • 西安专业做淘宝网站的公司深圳建筑设计找工作哪个招聘网站
  • linux系统怎么做网站南宁伯才网络
  • 京东网站建设及特点wordpress空间服务器
  • 巴中免费网站建设绿色主题 wordpress
  • 国外网站翻墙怎么做网站管理包括哪些内容
  • 关于做网站的总结seo教程技术资源
  • 宣传型网站有哪些上海注册公司没有地址怎么办
  • 阿q的项目wordpress宁波seo快速优化教程
  • 毕业设计医院网站设计怎么做学网站开发工作好找吗
  • 网站建设全包需要多少钱做网站都需要买什么问题
  • PHP网站建设项目经验wordpress lumen
  • 中铁中基建设集团网站小程序卖货怎么样
  • 网站建设方案应该怎么做龙岩今天刚刚最新新闻事件
  • 网站分为的风格个人域名怎么备案
  • 网站开发的调研内容国际购物平台都有哪些
  • 学校专业群建设专题网站emlog转移到wordpress
  • 湛江cms模板建站手机开发网站建设
  • 建设校园网站的背景及意义如何运营微信公众号