一、该问题的重现步骤是什么?
本地访问正常,发布到线上出现跨域问题
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
版本: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
boot版本配置是没问题的,后端地址部署后支持跨域了。
你报错的配置有两个地方:1、前端nginx没有配置跨域,导致报错。2、反向代理出错,正常情况用/api来反向代理后端,那请求后到后端正确的地址是不带/api前缀才对。目前已带了,所以报错404。
你需要再检查一下nginx配置是否有问题,完整的可以看这个:https://sns.bladex.cn/q-184.html
谢谢 已解决。
正确的 nginx 配置:
location /api {
proxy_pass http://127.0.0.1:10020/;
}
扫一扫访问 Blade技术社区 移动端