http之Redirect
Redirect 的概念
通过 url 访问某个路径请求资源时,发现资源不在 url 所指定的位置,这时服务器要告诉浏览器,新的资源地址,浏览器再重新请求新的 url,从而拿到资源。
若服务器指定了某个资源的地址,现在需要更换地址,不应该立刻废弃掉 url,如果废弃掉可能直接返回 404,这时应该告诉客户端新的资源地址。
Redirect 的使用
启动服务器 node server.js,localhost:8888 访问
访问时,发现 url 变成了 localhost:8888/new 了,并显示了 /new 路由下的内容
// server.js
const http = require('http')http.createServer(function (request, response) {console.log('request come', request.url)if (request.url === '/') {response.writeHead(302, { // or 301'Location': '/new' // 这里是同域跳转,只需要写路由})response.end()}if (request.url === '/new') {response.writeHead(200, {'Content-Type': 'text/html',})response.end('<div>this is content</div>')}
}).listen(8888)console.log('server listening on 8888')
查看network localhost
请求发现是302后,浏览器自动根据响应头中的 Location 路径进行跳转。
General
Status Code: 302 Found (from disk cache)Request Headers
Location: /new
Redirect 301 和 302 的区别
302 临时跳转,每次请求仍然需要经过服务端指定跳转地址
301 永久跳转
301的情况
每次访问 locahost:8888,都要经过服务端跳转,服务端通过 console.log 可以看到 / /new 两次请求。
const http = require('http')http.createServer(function (request, response) {console.log('request come', request.url)if (request.url === '/') {response.writeHead(302, { 'Location': '/new' })response.end()}if (request.url === '/new') {response.writeHead(200, {'Content-Type': 'text/html',})response.end('<div>this is content</div>')}
}).listen(8888)console.log('server listening on 8888')
301 的情况
访问 locahost:8888,第一次经过服务端跳转,服务端通过 console.log 可以看到 / /new 两次请求;第二次 服务端 console.log 只显示 /new ,没有再次经过服务器指定新的 Location。
response.writeHead(301, {'Location': '/new'})
注意:使用 301 要慎重,一旦使用,服务端更改路由设置,用户如果不清理浏览器缓存,就会一直重定向。
设置了 301,locahost 会从缓存中读取,并且这个缓存会保留到浏览器,当我们访问 8888 都会进行跳转。此时,就算服务端改变设置也是没有用的,浏览器还是会从缓存中读取。
http之Redirect相关推荐
- render函数和redirect函数的区别+反向解析
render函数和redirect函数的区别+反向解析 1.视图函数:一定是要包含两个对象的(render源码里面有HttpResponse对象) request对象:----->所有的请求 ...
- Response.Redirect 打开新窗体的两种方法
普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...
- c:redirect标签的使用
<c:redirect>标签的使用代码例子 redirect.jsp <%@ page contentType="text/html" pageEncoding= ...
- Flask中的重定向redirect和url_for
1.关于redirect和url_for先举个例子: (1).redirect: #重定向 302 #redirect:重定向URL #url_for:重定向函数 from flask import ...
- ICMP重定向(ICMP Redirect)
网络中的路由器通过相互之间的共同努力,将用户的数据包转发到目的地.通常情况下,主机都会将去往远程网络的数据包发送到路由器,路由器再尽最大努力转发数据.但是在某些情况下,收到数据包的路由器可能并不是去 ...
- redirect和forward的区别
异同 1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以 ...
- forward和redirect的区别
2019独角兽企业重金招聘Python工程师标准>>> 1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把 ...
- Response.Redirect 打开新窗口的两种方法
一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='htt ...
- 使用Response.Redirect 两种方法打开一个新窗口
普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...
- asp.net 在使用Response.Redirect try{}catch{}块失效
try { - Response.Redirect("/mymaimai.aspx"); - } catch (Exception e) { // 异常处理 } 使用以上语句,不管 ...
最新文章
- TestNG学习随笔
- 前瞻:在 Java 16 中会带来哪些新特性?
- 园内ORM讨论的经典文章及评论[转]
- 【2015沈阳现场A】
- 【力荐】Select查询语句中LIKE关键词的优化方法分析
- redis源码剖析(十五)——客户端思维导图整理
- c# 对COM+对象反射调用时地址参数处理 c# 对COM+对象反射调用时地址参数处理
- tplink软件升级有用吗_如何升级路由器教程:TPLink刷DDWRT更新固件
- UI设计师必备的技能|找灵感
- c语言中去掉最小值,2020-07-12(C语言)从顺序表中删除具有最小值的元素(假设唯一)并由函数返回被删除元素的值。空出的位置由最后一个元素填补,若顺序表为空则显示出错信息并退出运行。...
- 数据结构 —— 递归和树
- 安卓手机的APP图标尺寸规范和图标命名规范
- 吸粉神器——维盟智慧wifi,微信粉丝生产基地!
- 【巨杉数据库SequoiaDB】24 Hours , 数据库研发实录
- UpdateData() 函数
- CVPR 2020 | 旷视研究院探究优化场景文字识别的「词汇依赖」问题
- Win7、Win10系统封装后GHO文件太大?是因为虚拟内存没关、休眠文件没删!
- ChatGPT进化的秘密
- Java面向对象之子类方法重写
- 开源应用程序打包工具
热门文章
- SpringMVC转发与重定向的区别
- 中国电子驻车制动器行业市场研究与投资预测
- 计算机专硕报广东选调,【广东选调生】千万别考选调生?选调生是个大坑?
- websocket实现聊天室应用,包括文字和图片上传
- Python爬虫: 用urllib2+beautifulsoup写的抓取网页内容的示例
- 移动磁盘显示参数错误要怎么办啊
- 生活中我们的那些疑惑
- 技术指南 | 如何集成Perforce版本控制系统Helix Core (P4V) 与敏捷规划工具Hansoft
- 没什么卵用的 ICN 论文
- 新冠肺炎疫情引发空前应用需求,Dynatrace助企业轻松应对