0%

WEB页面跳转

在改bug时遇到了下面的问题:

当前页面:http://exploit.nkdbis.cn

原来的代码:

1
2
3
<h4 class="g-aline g-nav-lr-left l-title">
<a :href="'/article/' + item.id">{{item.title || item.name}}</a>
</h4>

点击链接显示:404 Not Found,查看请求:

1
2
3
4
5
Request URL: http://exploit.nkdbis.cn/article/8
Request Method: GET
Status Code: 404 Not Found
Remote Address: 39.106.204.28:80
Referrer Policy: strict-origin-when-cross-origin

将代码修改为:

1
2
3
<router-link :to="'/article/'+item.id">
<h4>{{item.title || item.name}}</h4>
</router-link>

再次请求,可以成功获得资源,查看请求:

1
2
3
4
5
Request URL: http://exploit.nkdbis.cn/api/front/article/8
Request Method: GET
Status Code: 200
Remote Address: 39.106.204.28:80
Referrer Policy: strict-origin-when-cross-origin

在此记录关于web页面跳转的知识点。

页面跳转

页面跳转有4种:jsp动作指令forward、html的超链接、重定向、response的响应跳转。

jsp动作指令forward

JSP(全称JavaServer Pages)是由Sun Microsystems公司主导建立的一种动态网页技术标准。 JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。

\jsp:forward转发,也是可以带参数,带值的。

· 静态中的格式:<jsp:forward page=”文件或标识路径的表达式”/>

· 动态中的格式:<jsp:forward page=”文件路径或标识路径的表达式”>
<jsp:param name=”参数名称1” value=”值1”/>
<jsp:param name=”参数名称2” value=”值2”/>
……
\</jsp:forward>

Forward(直接转发)是服务器直接请求资源,把内容响应给用户,这个过程只有一次请求,即只有一个request对象。Forward是一种服务器行为。

html的超链接

https://blog.csdn.net/cgl125167016/article/details/88973199#t5

重定向

通过修改http协议的header部分,对浏览器下达重定向指令的,让浏览器对在location中指定的url提出请求,使浏览器显示重定向网页的内容。

无论有没有设置基础路径,使用转发方式进行跳转的相对路径都是该文件的当前路径,而重定向跳转可以跳转到站点内或站点外的页面,所以使用绝对路径方式,“/”表示定位到服务器站点根目录。

Redirect(间接转发),是服务器反馈给浏览器让它重新再发起一次请求,这个过程中有两次请求,即有两个request对象。Redirect是一种客户端行为。

response的响应跳转

response是服务器对客户端的反馈,其对页面重定向的流程是:当客户端向服务器发起请求时,服务器重新给客户端一个URL地址,让客户端重新发起一个新的请求,在这个过程中,客户端第一次请求所携带的头信息将消失,在重定向之后而且地址栏显示的是重定向的页面,这是一种客户端行为。

可以通过sendRedirect重定向到服务器任何一个URL。若使用绝对路径,其中的根路径是服务器根目录,如URL=”/xxx”,则实际定向到http://localhost:8080/xxx。一般可使用request.getContextPath() + “/xxx”来访问webapp根目录下的资源。
注意:通过重定向无法访问WEB-INF中的资源,因为重定向是客户端行为,相当于浏览器重新输入URL,而WEB-INF中的内容无法通过输入URL来访问。


漏洞管理系统仍然存在的问题:

直接访问http://exploit.nkdbis.cn/index会报404:

1
2
3
4
5
Request URL: http://exploit.nkdbis.cn/index
Request Method: GET
Status Code: 404 Not Found
Remote Address: 39.106.204.28:80
Referrer Policy: strict-origin-when-cross-origin

访问http://exploit.nkdbis.cn时,网址栏中显示http://exploit.nkdbis.cn/index,但是请求中显示:

1
2
3
4
5
Request URL: http://exploit.nkdbis.cn/
Request Method: GET
Status Code: 200 OK
Remote Address: 39.106.204.28:80
Referrer Policy: strict-origin-when-cross-origin

暂时没明白是怎么回事。