gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1384
阅读:5142回复:2

若依框架接入前端 报错401 请求访问:/error,认证失败,无法访问系统资源,有可能是这个原因

楼主#
更多 发布于:2022-07-15 15:27
自定义的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
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1384
沙发#
发布于:2022-07-15 16:16
@Chen_Yulin 参考项目下载、运行、配置、构建、打包、部署:全步骤实战演示。 https://www.bilibili.com/video/BV1uK411p7Bp
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1384
板凳#
发布于: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;
    }
}
游客


返回顶部