可以看一下我的博客,里面有一篇文章写了
这样部署以后,虽然可以通过公网IP:8080进行访问,但是我们会发现点击刷新以后,会出现404NotFound错误。
在webapp里面的项目所在统计目录下,新建一个WEB-INF文件夹,添加web.xml文件,在里面添加内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1" metadata-complete="true">
<display-name>Router for Tomcat</display-name>
<error-page>
<error-code>404</error-code>
<location>/index.html</location>
</error-page>
</web-app>
这样访问页面时进行刷新就不会404 Not Found啦!
首先,我看你请求的是localhost:8080,这个应该是你vue的请求地址有问题
vue项目一般有两种运行方案
1.采用npm运行,这种你需要修改你的请求代理地址,一般是在vue.config.js里面
2.采用nginx做反向代理,我看你是前后端分析,部署的话最好采用nginx做代理,那么可能是你nginx代理配置文件有点问题
其次,你的跨域问题,如果是用nginx代理的话,可以在nginx里面解决,也可以在后端解决
nginx采用location ^~/api/ {
rewrite ^/api/(.*) /$1 break;
proxy_pass http://localhost:3000;
}形式来转发请求,
try_files $uri $uri/ /index.html;有可能解决地址需要添加.html后缀或者路由报错404
java
/**
* 跨域配置
*/
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
// 设置访问源地址
config.addAllowedOriginPattern("*");
// 设置访问源请求头
config.addAllowedHeader("*");
// 设置访问源请求方法
config.addAllowedMethod("*");
// 有效期 1800秒
config.setMaxAge(1800L);
// 添加映射路径,拦截一切请求
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
// 返回新的CorsFilter
return new CorsFilter(source);
}
主要问题还是看你的vue是怎么部署怎么运行的,可以回复你的运行方式再继续分析