后端controller上已加了@CrossOrigin注解,前端上传文件时仍然报跨域的错:No 'Access-Control-Allow-Origin' header is present on

在Vue应用中使用Element UI进行文件上传时,遇到跨域错误。尽管后端Java Controller已添加@CrossOrigin注解,但问题仍未解决。排查后发现,原因是Nginx的默认client_max_body_size限制为1M。通过在Nginx配置文件nginx.conf中增加`client_max_body_size 200M`并重启Nginx,成功解决了文件上传的跨域问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:前端vue、nginx windows端1.61.1
报错:前端通过element 文件上传控件,点击上传文件,浏览器报错:
Access to XMLHttpRequest at ‘http://localhost:6100/vidservice/vod/upload’ from origin ‘http://localhost:9529’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
浏览器报错
后端controller上已经加了@CrossOrigin注解,而且其他controller同样使用此注解,并没有出现跨域问题:

@RestController
@RequestMapping("/vidservice/vod")
@CrossOrigin

查了教学视频发现nginx中需要设置最

### 问题解决方案 资源共享(CORS, Cross-Origin Resource Sharing)是一种安全机制,用于防止浏览器中的恶意脚本攻击。当客户端尝试向不同源的服务器发送请求,如果目标服务器未设置允许的 `Access-Control-Allow-Origin` 头部,则会触发误。 以下是几种常见的解决方法: #### 方法一:使用 Chrome 插件临解决问题 可以通过安装 **Allow CORS: Access-Control-Allow-Origin** 插件来快速解决开发阶段的问题[^1]。启用该插件后,它会在 HTTP 请求头中自动添 `Access-Control-Allow-Origin: *` 字段,从而绕过浏览器的安全限制。需要注意的是,这种方法仅适用于本地调试环境,在生产环境中不可依赖此类工具。 #### 方法二:在服务端配置 CORS 支持 对于基于 Spring Boot 的后端应用,可以利用 `@CrossOrigin` 注解实现细粒度控制。例如,将注解放置在 Controller 类上可使整个类支持访问;放置于特定方法之上则只针对单个接口生效[^2]。 ```java @RestController @RequestMapping("/api") public class ExampleController { @GetMapping("/data") @CrossOrigin(origins = "*", maxAge = 3600) public ResponseEntity<String> getData() { return ResponseEntity.ok("This data can be accessed from any origin."); } } ``` 上述代码片段展示了如何通过 `@CrossOrigin` 注解指定允许的所有来源 (`*`) 并定义缓存间 (maxAge)[^2]。 #### 方法三:调整前端项目的网络请求基础 URL 某些情况下,修改前端框架内的 API 地址也可能缓解部分现象。比如 Vue.js 或 React 应用程序可能因为代理配置不当而引发不必要的冲突。确保开发模式下的 host 设置指向 localhost 可能有助于规避这类情况的发生[^4]。 #### 方法四:手动设置响应头部信息 除了采用框架内置功能外,还可以直接操作 Web 容器或者中间件层面上的相关参数。以 Nginx 配置为例,可以在 server block 中入如下指令: ```nginx add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization'; ``` 这些语句的作用在于显式告知客户端哪些外部站点被授权以及它们所能执行的操作种类[^3]。 --- ### 总结 综合来看,最推荐的方式是在实际部署的服务端做好全面的支持规划——即合理运用诸如 `@CrossOrigin` 这样的声明式手段或是定制化处理逻辑完成必要的权限授予过程。与此同也要注意保护敏感数据不被非法获取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值