扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
32909人学习
我在看到javascript高级程序设计(第三版)第492页的时候,有个疑问
当我用了"假"URL以后,刷新了,会返回404错误,除非我在Web服务器上有个真的这样的链接,那用户难免去刷新页面,难道我真的要去搞一个真的文件对应真的链接.那还要这个pushState()有什么用,岂不是很不方便吗
人生最曼妙的风景,竟是内心的淡定与从容!
pushState主要用在SPA应用中, 回答题主的问题:
pushState
出现404。这是因为PushState模式下的URL里面没有#,浏览器会真的向服务端发起一个请求,而我们在服务端并没有对应于这个路径的资源。
但是并不需要在服务器上有一个真链接(会把人累死), 只需要更改一下服务器的配置, 让不存在的页面(404)重定向到根路由即可.
以Tomcat为例,配置非常简单,只要在你的项目的web.xml里面加上以下配置就可以了:
<error-page> <error-code>404</error-code> <location>/</location> </error-page>
这样一来,对于找不到资源的路径,Tomcat会全部重定向到根路径上去,这样你的前端框架不论是angular/vue/react/backbone 就可以在前端自己处理请求的URL了。
对于其它类型的服务端,例如nginx/apache/IIS,请参考这篇文档:https://github.com/angular-ui...
来源: https://my.oschina.net/mumu/b...
按刷新会以当前浏览器的url发请求到服务器。
例如你通过pushState()把当前地址变成 boomshaklaka.com/boom点刷新后服务器收到这个地址发现不存在会返回404的。
首先你要理解前端路由跟后端路由的区别。
在只有后端路由的情况下,你请求的所有页面都是由后端返回给你的,这时所有路由都是由后端控制。
但有时侯我们不希望刷新页面,但url也想它改变,比如SPA应用。这时候我们就需要一个前端路由,这个pushState在这就起这个作用。
首先我还是习惯后台处理路由, 我就以后台路由举例子:
首先url 可以任意去定义, 至于你想关联项目中的哪个文件, 任意
<action name="index"> <result>xxx/index.jsp</result> </action> <action name="login"> <result>xxx/index.jsp</result> </action>
可以由不同的action指向同一个页面, 所以你的网站要至少保证有一个页面吧
其次:
在 HTML 文件中, history.pushState() 方法向浏览器历史添加了一个状态。
更多是用来设置一个锚点:
window.location = "#foo";
至于文中说的404还是因为路由的指向有问题, 没有找到资源.
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部
pushState
主要用在SPA应用中, 回答题主的问题:出现404。这是因为PushState模式下的URL里面没有#,浏览器会真的向服务端发起一个请求,而我们在服务端并没有对应于这个路径的资源。
但是并不需要在服务器上有一个真链接(会把人累死), 只需要更改一下服务器的配置, 让不存在的页面(404)重定向到根路由即可.
以Tomcat为例,配置非常简单,只要在你的项目的web.xml里面加上以下配置就可以了:
这样一来,对于找不到资源的路径,Tomcat会全部重定向到根路径上去,这样你的前端框架不论是angular/vue/react/backbone 就可以在前端自己处理请求的URL了。
对于其它类型的服务端,例如nginx/apache/IIS,请参考这篇文档:https://github.com/angular-ui...
来源: https://my.oschina.net/mumu/b...
按刷新会以当前浏览器的url发请求到服务器。
例如你通过pushState()把当前地址变成 boomshaklaka.com/boom
点刷新后服务器收到这个地址发现不存在会返回404的。
首先你要理解前端路由跟后端路由的区别。
在只有后端路由的情况下,你请求的所有页面都是由后端返回给你的,这时所有路由都是由后端控制。
但有时侯我们不希望刷新页面,但url也想它改变,比如SPA应用。这时候我们就需要一个前端路由,这个pushState在这就起这个作用。
首先我还是习惯后台处理路由, 我就以后台路由举例子:
首先url 可以任意去定义, 至于你想关联项目中的哪个文件, 任意
可以由不同的action指向同一个页面, 所以你的网站要至少保证有一个页面吧
其次:
更多是用来设置一个锚点:
至于文中说的404还是因为路由的指向有问题, 没有找到资源.