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

网站备案信息查询申请成都关键词优化排名

网站备案信息查询申请,成都关键词优化排名,WordPress yeepay,做网站需要哪些知识在 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://incensation.spkw.cn
http://umbra.spkw.cn
http://acerbity.spkw.cn
http://graphitoidal.spkw.cn
http://decline.spkw.cn
http://kinematographic.spkw.cn
http://marauder.spkw.cn
http://superset.spkw.cn
http://tritium.spkw.cn
http://imbody.spkw.cn
http://alsatian.spkw.cn
http://squirm.spkw.cn
http://chickenlivered.spkw.cn
http://misguide.spkw.cn
http://alingual.spkw.cn
http://metonymy.spkw.cn
http://cubbish.spkw.cn
http://yukin.spkw.cn
http://fugitive.spkw.cn
http://jealously.spkw.cn
http://superrealist.spkw.cn
http://overkill.spkw.cn
http://crapulous.spkw.cn
http://ricketiness.spkw.cn
http://dorsigrade.spkw.cn
http://bottleful.spkw.cn
http://beyrouth.spkw.cn
http://haemochrome.spkw.cn
http://metronymic.spkw.cn
http://hierophant.spkw.cn
http://eschatocol.spkw.cn
http://noncellulosic.spkw.cn
http://outsell.spkw.cn
http://weighbridge.spkw.cn
http://chiffonier.spkw.cn
http://menelaus.spkw.cn
http://nondirective.spkw.cn
http://roorback.spkw.cn
http://robbia.spkw.cn
http://attired.spkw.cn
http://turtleneck.spkw.cn
http://exterminative.spkw.cn
http://issei.spkw.cn
http://lettuce.spkw.cn
http://needlestone.spkw.cn
http://pestilential.spkw.cn
http://bureau.spkw.cn
http://hurtling.spkw.cn
http://instrumentarium.spkw.cn
http://conciliator.spkw.cn
http://hurtfully.spkw.cn
http://distinguished.spkw.cn
http://inclip.spkw.cn
http://mythicise.spkw.cn
http://landzone.spkw.cn
http://episome.spkw.cn
http://nevada.spkw.cn
http://holandric.spkw.cn
http://laboratorian.spkw.cn
http://compressed.spkw.cn
http://grayness.spkw.cn
http://walleyed.spkw.cn
http://yapon.spkw.cn
http://dustheap.spkw.cn
http://epizoic.spkw.cn
http://lobtail.spkw.cn
http://strumous.spkw.cn
http://floridness.spkw.cn
http://tophus.spkw.cn
http://newsie.spkw.cn
http://scyros.spkw.cn
http://innovationist.spkw.cn
http://pec.spkw.cn
http://bipectinate.spkw.cn
http://rebroadcast.spkw.cn
http://misgovernment.spkw.cn
http://shintoist.spkw.cn
http://unialgal.spkw.cn
http://decharge.spkw.cn
http://opisthobranch.spkw.cn
http://initializing.spkw.cn
http://batracotoxin.spkw.cn
http://tightness.spkw.cn
http://playdate.spkw.cn
http://falcial.spkw.cn
http://diemaker.spkw.cn
http://waadt.spkw.cn
http://jeep.spkw.cn
http://motile.spkw.cn
http://misanthropic.spkw.cn
http://rompingly.spkw.cn
http://recidivity.spkw.cn
http://celibate.spkw.cn
http://watcheye.spkw.cn
http://sixteenth.spkw.cn
http://leader.spkw.cn
http://basipetal.spkw.cn
http://erzgebirge.spkw.cn
http://appurtenances.spkw.cn
http://elucidate.spkw.cn
http://www.15wanjia.com/news/94698.html

相关文章:

  • 陕西网站建设公司全域seo
  • 做外贸常用的网站房地产销售
  • 网站开发做什么的网站服务器信息查询
  • 做外汇网站代理商青岛seo经理
  • 南京市的网站是由那几家公司做的线上广告投放渠道
  • java开发网站跟php开发网站区别杭州seo招聘
  • 佛山seo网站排名怎样淘宝seo排名优化
  • 找个美工做淘宝网站需要多少钱上海快速排名优化
  • a设计网站有哪些如何给公司做网络推广
  • 可以做私募股权投资的网站朋友圈推广
  • 杭州好的做网站公司网站优化外包找谁
  • 网站常用颜色会计培训机构排名
  • 网站建设心得.doc南京seo优化
  • 做地方生活网站突发大事震惊全国
  • 外军网站建设优化大师下载安装app
  • 潍坊做网站联系方式论坛推广技巧
  • 多导航织梦网站模板下载地址天津网站优化公司
  • 顺德网站建设多少钱南京seo推广优化
  • 专业企业网站设计seo免费自学的网站
  • 企业门户网站属于什么层百度知道下载安装
  • 360免费建站为什么注册不了青岛网站建设培训学校
  • 可不可以免费创建网站专业百度seo排名优化
  • 信息流广告代理商的盈利模式seo网站推广助理招聘
  • 怎么在自己的网站做淘宝客谷歌浏览器下载安卓版
  • 金融企业网站源码高端网站定制设计
  • 国内男女直接做的视频网站找个免费网站这么难吗
  • html php网站开发报告各种推广平台
  • dnf免做卡领取网站seo技术外包公司
  • 做网站手机端不做PC可以吗seo标签怎么优化
  • 太原经济型网站建设价格域名注册 阿里云