vue spa项目,history模式,微信分享时,安卓微信浏览器显示404

发布于 2022-09-06 11:42:58 字数 1203 浏览 19 评论 0

vue spa项目,history模式,https://news.otimes.com/list/... 这种带参数的链接,安卓微信浏览器显示404,https://news.otimes.com 不带参数的链接能显示,跳转也是正常的,是不是安卓浏览器不能兼容history模式,我可以怎么改吗?

前端配置了

 {
      path: '*',
      name: 'notFind',
      meta: {
        title: '404未找到',
      },
      components: setLogoComponents(notFind)
    },

后台是tomcat,也配置了

 <error-page>  
   <error-code>404</error-code>  
   <location>/</location>  
</error-page> 

火狐,谷歌,ie下都没有404,微信开发工具虽然也有404,但还是能访问,只有安卓微信浏览器,404

ps:https证书已布上,也是已备案的域名,微信js安全域名和白名单都已配置

1.chrome模拟器,能访问,无404,
图片描述

2.微信开发者工具,能访问,有404
图片描述

3.安卓手机微信浏览器,不能访问,有404
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧人 2022-09-13 11:42:58

感谢这位大神,写的都很清楚了,http://blog.csdn.net/xu122723...

问题的主要原因是,虽然tomcat已经拦截了404,并指向了我的index页面,但是这个404的标记还是存在,只要遇见存在404错误页处理的平台,就gg了。就比如微信平台,他检测到你的404,就立马跳向公益404页面了。

解决方法一:后台设置拦截器,在发送任何请求前,后台都做拦截,并指向index页面。

解决方法二:用nginx进行拦截,修改nginx.conf文件

http {

# 此处省略好多字

server {

    # nginx才配使用80端口,其他服务速速离去
    listen       80;

    # 没啥好解释的
    server_name  localhost;

    # 指定根目录,由于我的前端项目是直接放在nginx下的html文件夹,所以我这样配
    root html;

    # 这里其实是由if变过来的,意思是如果uri存在,那就访问uri的资源,如果uri不存在,那就访问该目录下index.html文件。如果看不懂我的解释,可以看这个https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#front-controller-pattern-web-apps
    try_files $uri $uri/ /index.html;

    # 这里是配你Tomcat里面的其他java项目,意思是当你访问http://ip/xxx的时候,会到这个代码块里面进行对应操作
    location /xxx {
        # 这些照着加就好了,无非是获取服务器host/ip相关,一定要加,否则如果你的项目并不是前后端分离,而是SSH/SSM带有jsp或者模板页面的,那就会出现找不到css/js等找不到一切静态资源文件的错误。为什么会报错,因为你看network面板你就知道,他是去访问http://127.0.0.1/xxx/css...而并不是访问服务器的真实ip,所以还是乖乖加上吧!
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 去该地址去找项目资源
        proxy_pass http://127.0.0.1:8080/xxx;
    }
  }
}
儭儭莪哋寶赑 2022-09-13 11:42:58
upstream ups_ucar_wx {
  #ip_hash;
  #consistent_hash $remote_addr;
  server 192.168.8.59:8080;
  #check interval=10000 rise=2 fall=5 timeout=1000 type=http default_down=false;
  #check_http_send "GET /health HTTP/1.0\r\n\r\n";
}

server {
  listen      80;
  server_name   xxx.com;
  charset     utf-8;
  access_log  logs/xxx.access.log  main;
  error_log   logs/xxx.error.log;
  
  #include /etc/nginx/agent_deny.conf;

  location / {
    proxy_pass  http://ups_ucar_wx;
    # 具体做什么,不懂,不过不加会显示400
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 匹配不到的路径,都跳/index.html
    try_files $uri $uri/ /index.html;
  }

  location /static/ {
    root /;
    proxy_pass  http://ups_ucar_wx;
    # 具体做什么,不懂,不过不加会显示400
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 设置过期时间
    expires 30d;
  }
}

https://www.jianshu.com/p/47e...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文