node.js forward和redirect的区别

JavaScript019

node.js forward和redirect的区别,第1张

用户向服务器发送了一次HTTP请求,该请求肯能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的。根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect)两种有何区别呢?

1.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

2.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.

redirect:不能共享数据.

3.从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.

redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

4.从效率来说

forward:高.

redirect:低.

以下通过一个例子来说明URL重定向,和获取重定向之后的地址以及参数:

js重定向

html:

<input type="hidden" id="userid" value="23">

name:<input type="text" id="username" name="username">

<a id="show_a" href="javascript:void(0)" onclick="go()">跳转</a>

js方法重定向

function go(){

   var id=$("#userid").val()

   var username=$("#username").val()

   //两个页面是同目录下可以按照以下写,如果不同则写绝对路径

   window.location.href="queryImage.jsp?id="+id+"&username="+username

  }

点击“跳转”即可URL重定向

跳转到queryImage.jsp页面

$(function(){

//获取当前地址

var url=window.location.href

//输出获取的地址

alert(url)

//截取参数

var param=url.substring(url.indexOf("?")+1)

//输出截取的参数

alert(param)

var arr=param.split("&")

for(i=0i<arr.lengthi++){

//遍历参数输出

alert(arr[i])

}

})

地址输出:

截取参数:

遍历参数:

常规页面location.href跳转被阻止时,不涉及前端部分。

也有可能是浏览器本身对于http和https的证书验证拦截,并非bug。

以下为https在大部分浏览器标识。

部分浏览器会因以下原因阻止页面的重定向。