2.7.1.RELEASE Boot版 ,本地访问正常,发布到线上出现跨域问题

Blade 已结 2 1239
will
will 剑圣 2021-01-29 13:49
悬赏:10

一、该问题的重现步骤是什么?

本地访问正常,发布到线上出现跨域问题



二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?

版本:2.7.1.RELEASE Boot版 。本地win10  线上centos8 ,nginx

四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

nginx 


location ^~/api {
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_buffering off;
     # rewrite ^/api/(.*)$ /$1 break;
     proxy_pass http://127.0.0.1:10020;
}
BladeConfiguration 代码:

@Configuration
public class BladeConfiguration implements WebMvcConfigurer {

   /**
    * 跨域配置
    */
   @Override
   public void addCorsMappings(CorsRegistry registry) {
      registry.addMapping("/**")
         .allowedOrigins("*")
         .allowedHeaders("*")
         .allowedMethods("*")
         .maxAge(3600)
         .allowCredentials(true);
   }

}
2021-01-29 14:24:52.020  WARN 240352 --- [  XNIO-1 task-1] o.s.web.servlet.PageNotFound             : No mapping for OPTIONS /api/blade-auth/oauth/token
2021-01-29 14:24:52.031 ERROR 240352 --- [  XNIO-1 task-1] o.s.c.log.error.RestExceptionTranslator  : 404没找到请求:No handler found for OPTIONS /api/blade-auth/oauth/token
2021-01-29 14:25:01.034  WARN 240352 --- [  XNIO-1 task-2] o.s.web.servlet.PageNotFound             : No mapping for OPTIONS /api/blade-auth/oauth/token
2021-01-29 14:25:01.035 ERROR 240352 --- [  XNIO-1 task-2] o.s.c.log.error.RestExceptionTranslator  : 404没找到请求:No handler found for OPTIONS /api/blade-auth/oauth/token

2条回答
  •  admin
    admin (最佳回答者)
    2021-01-29 14:43

    boot版本配置是没问题的,后端地址部署后支持跨域了。

    你报错的配置有两个地方:1、前端nginx没有配置跨域,导致报错。2、反向代理出错,正常情况用/api来反向代理后端,那请求后到后端正确的地址是不带/api前缀才对。目前已带了,所以报错404。

    你需要再检查一下nginx配置是否有问题,完整的可以看这个:https://sns.bladex.cn/q-184.html

    0 讨论(1)
  • 2021-01-29 16:55
    谢谢 已解决。
    
    正确的 nginx 配置:
    
    location /api {
         proxy_pass http://127.0.0.1:10020/;
    }


    0 讨论(0)
提交回复