阅读:5142回复:2
若依框架接入前端 报错401 请求访问:/error,认证失败,无法访问系统资源,有可能是这个原因
自定义的api、按照官方的配置跨域
一、三种方式配置跨域-官方代码 1、单个控制器方法CORS注解 @RestController @RequestMapping("/system/test") public class TestController { @CrossOrigin @GetMapping("/{id}") public AjaxResult getUser(@PathVariable Integer userId) { // ... } @DeleteMapping("/{userId}") public AjaxResult delete(@PathVariable Integer userId) { // ... } } 2、整个控制器启用CORS注解 @CrossOrigin(origins = "http://ruoyi.vip", maxAge = 3600) @RestController @RequestMapping("/system/test") public class TestController { @GetMapping("/{id}") public AjaxResult getUser(@PathVariable Integer userId) { // ... } @DeleteMapping("/{userId}") public AjaxResult delete(@PathVariable Integer userId) { // ... } } 3、全局CORS配置(在ResourcesConfig重写addCorsMappings方法) /** * web跨域访问配置 */ @Override public void addCorsMappings(CorsRegistry registry) { // 设置允许跨域的路径 registry.addMapping("/**") // 设置允许跨域请求的域名 .allowedOrigins("*") // 是否允许证书 .allowCredentials(true) // 设置允许的方法 .allowedMethods("GET", "POST", "DELETE", "PUT") // 设置允许的header属性 .allowedHeaders("*") // 跨域允许时间 .maxAge(3600); } 二、按照上面进行配置了还是不行,最后发现 application.yml 文件配置token的header 字段是 Authorization,而我的请求接口正好用了这个字段,所以系统就强制按照token 进行解析,最后就报错了 解决办法: 去掉前端请求头中携带的header 字段Authorization,改成别的字段即可 如:access-Token,这样自定义进行验证即可 三、补充一下nginx 的配置 #nginx 配置跨域处理 location /api/{ add_header 'Access-Control-Allow-Origin' '*'; proxy_pass http://p1xj1.12natapp1.cc/api/; } #刷新vue 404的解决办法 location /{ index index.html index.htm; try_files $uri $uri/ /index.html; } ———————————————— 版权声明:本文为CSDN博主「来自新疆的程序员」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u011611479/article/details/115430430 |
|
沙发#
发布于:2022-07-15 16:16
@Chen_Yulin 参考项目下载、运行、配置、构建、打包、部署:全步骤实战演示。 https://www.bilibili.com/video/BV1uK411p7Bp
|
|
板凳#
发布于:2022-07-15 16:20
nginx常用配置:proxy_set_header用来设定被代理服务器接收到的header信息。
如果不设置proxy_set_header,则默认host的值为proxy_pass后面跟的那个域名或者IP(一般写IP) proxy_set_header X-Real-IP $remote_addr; 用来设置被代理端接收到的远程客户端IP,如果不设置,则header信息中并不会透传远程真实客户端的IP地址。 这段配置也是一般情况下,反向代理的标准配置: server { listen 80; server_name www.xxx.com; location /aming/ { proxy_pass http://192.168.1.10:8080/linux/; proxy_set_header host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } |
|