重定向和转发的区别及应用_重定向发给别人能看见吗

重定向和转发的区别及应用_重定向发给别人能看见吗重定向和转发的区别:一:重定向与转发的区别1.重定向过程:客户端浏览器发送http请求→web服务器接收后发送30X状态码响应及对应新的location给客户浏览器→客户浏览器发现是30X响应,则自动再发送一个新的http请求,请求url是新的location地址→服务器根据此请求寻找资源并发送给客户。//java代码示例response.sendRedirect(“xxx.jsp或者servlet”);2.转发过程:客户端浏览器发送http请求→web服务器接受此请求→

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

重定向和转发的区别:

在这里插入图片描述
重定向的编码是 302;
转发的编码是307;

一:重定向与转发的区别
1.重定向过程: 客户端浏览器发送http请求 → web服务器接收后发送30X状态码响应及对应新的location给客户浏览器 → 客户浏览器发现是30X响应,则自动再发送一个新的http请求,请求url是新的location地址
→ 服务器根据此请求寻找资源并发送给客户。

//java代码示例
response.sendRedirect("xxx.jsp或者servlet");

2.转发过程: 客户端浏览器发送http请求 → web服务器接受此请求 → 调用内部的一个方法在容器内部完成请求处理和转发动作 → 将目标资源发送给客户。

//java代码示例
request.getRequestDispatcher("xxx.jsp或者servlet").forward(request,response);

二、转发和重定向对比:

转发 重定向
跳转方式 服务器端转发 客户端转发
客户端发送请求次数 1次 2次
客户端地址栏是否改变 不变
是否共享request域 共享 不共享(request域中的数据丢失),必须使用session传递属性
是否共享response域 共享 不共享
范围 网站内 可以跨站点
JSP URL不可带参数 URL可带参数
是否隐藏路径 隐藏 不隐藏

三、什么时候使用重定向,什么时候使用转发?
原则上: 要保持request域的数据时使用转发,要访问外站资源的时候用重定向,其余随便;
特殊的应用: 对数据进行修改、删除、添加操作的时候,应该用response.sendRedirect()。如果是采用了request.getRequestDispatcher().forward(request,response),那么操作前后的地址栏都不会发生改变,仍然是修改的控制器,如果此时再对当前页面刷新的话,就会重新发送一次请求对数据进行修改,这也就是有的人在刷新一次页面就增加一条数据的原因。

四、转发与重定向的安全性
转发安全性: 在服务器内部实现跳转,客户端不知道跳转路径,相对来说比较安全。
重定向安全性: 客户端参与到跳转流程,给攻击者带来了攻击入口,受威胁的可能性较大。比如一个HTTP参数包含URL,Web应用程序将请求重定向到这个URL,攻击者可以通过修改这个参数,引导用户到恶意站点,并且通过将恶意域名进行十六进制编码,一般用户很难识别这是什么样的URL;或者指引到该网站的管理员界面,如果访问控制没有做好将导致一般用户可以直接进入管理界面。

五、调用方式
我们知道,在servlet中调用转发、重定向的语句如下:

request.getRequestDispatcher(“new.jsp”).forward(request, response); //转发到new.jsp

response.sendRedirect(“new.jsp”); //重定向到new.jsp

在jsp页面中你也会看到通过下面的方式实现转发:
<jsp:forward page=“apage.jsp” />

当然也可以在jsp页面中实现重定向:
<%response.sendRedirect(“new.jsp”); %> //重定向到new.jsp

六、总结区别
1.转发是服务器行为,重定向是客户端行为
2.重定向是两次请求的过程,而转发只有一次.由此可见重定向是由浏览器完成的,转发是服务器内部完成的。
3.在重定向的过程中,传输的信息会被丢失。
转发中传输的信息不会丢失。
4.重定向会改变地址栏的内容,转发不会

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195875.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • swing58_ML2437A

    swing58_ML2437A给定一个长度为 n 的整数序列,初始时序列为 {1,2,…,n−1,n}。序列中的位置从左到右依次标号为 1∼n。我们用 [l,r] 来表示从位置 l 到位置 r 之间(包括两端点)的所有数字构成的子序列。现在要对该序列进行 m 次操作,每次操作选定一个子序列 [l,r],并将该子序列中的所有数字进行翻转。例如,对于现有序列 1 3 2 4 6 5 7,如果某次操作选定翻转子序列为 [3,6],那么经过这次操作后序列变为 1 3 5 6 4 2 7。请你求出经过 m 次操作后的序列。输入格式第

    2022年8月10日
    5
  • vue人脸识别_vue不是内部或外部命令

    vue人脸识别_vue不是内部或外部命令1.vue报错:无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    2022年8月18日
    3
  • sql修改字段类型大小

    sql修改字段类型大小之前在百度上面查询到修改字段的语句:alerttable表名altercolumn列名类型【大小】notornotnull;但是执行完这句话后发现报错后来修改一下语句altertable表名modify(列名类型【大小】);ok,编译通过。

    2022年5月2日
    51
  • contextConfigLocation加载「建议收藏」

    contextConfigLocation加载「建议收藏」&lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt; classpath:applicationContext.xml &lt;/param-value&gt;&lt;/context-param&gt;只加载类路径下的ap…

    2022年6月15日
    26
  • vue双向绑定原理 面试_vue首屏加载优化

    vue双向绑定原理 面试_vue首屏加载优化vue.js采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。数据的双向绑定,首先要对数据进行劫持监听,所以我们需要设置一个监听器Observer,用来监听所有属性。如果属性发上变化了,就需要告诉订阅者Watcher看是否需要更新。因为订阅者是有很多个,所以我…

    2022年10月17日
    0
  • 同济大学 线性代数 第六版 pdf_【课后习题答案】工程数学线性代数同济第六版+课后习题答案…

    同济大学 线性代数 第六版 pdf_【课后习题答案】工程数学线性代数同济第六版+课后习题答案…资料介绍本次分享资源内容为工程数学线性代数(第六版)课后习题答案教材:工程数学线性代数(第六版)作者:同济大学数学系编出版社:高等教育出版课后习题答案第一章行列式第二章矩阵及其运算第三章矩阵的初等变换与线性方程组第四章向量组的线性相关性第五章相似矩阵及二次型第六章线性空间与线性变换温馨提示:1、资料下载链接如有失效请联系小编获取最新链接!2、声明:上述资料…

    2022年7月25日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号