首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么supertest (快速测试)返回的状态是301而不是200?

supertest是一个流行的Node.js库,用于进行HTTP请求的测试。当使用supertest发送HTTP请求时,有时会遇到返回状态码为301而不是200的情况。下面是对这个问题的完善和全面的答案:

301状态码是HTTP协议中的一个重定向状态码,表示所请求的资源已被永久移动到新的URL。当supertest发送请求时,如果服务器返回301状态码,意味着被请求的资源已经被永久重定向到了另一个URL。

通常情况下,服务器返回301状态码是因为被请求的URL已经发生了永久性的变化,服务器希望客户端以后直接访问新的URL。这种情况下,supertest会自动跟随重定向,并返回重定向后的URL的响应。

返回301状态码的优势在于可以提供更好的用户体验和SEO优化。用户在访问旧URL时会被自动重定向到新的URL,避免了404错误的出现。同时,搜索引擎也会更新索引,将旧URL替换为新的URL,提高网站的可搜索性和排名。

301状态码的应用场景包括但不限于:

  1. 网站URL结构调整:当网站的URL结构发生变化时,可以使用301重定向来告知搜索引擎和用户新的URL。
  2. 域名变更:当网站更换域名时,可以使用301重定向将旧域名的访问流量引导到新域名。
  3. 页面合并或移动:当网站的某些页面被合并到其他页面或移动到新的位置时,可以使用301重定向来保持用户访问的连续性。

腾讯云相关产品中,可以使用CDN加速服务来实现301重定向。CDN加速服务可以将用户请求快速分发到最近的节点,提高网站的访问速度和稳定性。您可以通过腾讯云CDN产品了解更多信息:腾讯云CDN产品介绍

总结:supertest返回状态码301而不是200是因为被请求的资源已经永久重定向到了新的URL。301重定向可以提供更好的用户体验和SEO优化。在腾讯云中,可以使用CDN加速服务来实现301重定向。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么 useState 返回 array 不是 object?

[count, setCount] = useState(0) 这里可以看到 useState 返回一个数组,那么为什么返回数组不是返回对象呢?...为什么返回数组不是返回对象 要弄懂这个问题要先明白 ES6 解构赋值,来看 2 个简单例子: 数组解构赋值 const foo = [1, 2, 3]; const [one, two, three...,这个问题就很好解释了 如果 useState 返回数组,那么使用者可以对数组中元素命名,代码看起来也比较干净 如果 useState 返回对象,在解构对象时候必须要和 useState 内部实现返回对象同名...总结 useState 返回 array 不是 object 原因就是为了降低使用复杂度,返回数组的话可以直接根据顺序解构,返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState...返回 array 不是 object?

2.1K20

初识字节流+实现缓冲字节流OutputStream主要方法构造方法读关流实现BufferedInputStream实现BufferedOutputStream为什么read()返回Int型不是

(String file,boolean append) FileOutputStream(File file,boolean appeand) 后面两种方法用于判断是否需要续写,前面两个方法直接覆盖文件...-1 这里有个特别好用方法,可以用来知道文件大小 available():int; 返回文件字节数 这时就可以用这个方法来定义array大小,那么就可以一次性读完了 关流 flush...1){return -1;} } len--; return (array[index++]&255);//防止出现读到11111111此时错误返回了...格式测试一下效果 import java.io.*; import mypackage.*; class Test{ public static void main(String[] agrs)...---- 错误返回了-1 如果扫描到了11111111那么此时将byte->int-1,如果这样的话,程序就会终止不会进行 为什么read()返回Int型不是byte型呢??

1.2K80

GraphQL测试实践

Schema只是一个概念,它是由各种数据类型及其字段组成,每个类型每个字段都有相应函数来返回数据,且Schema里字段可以聚合其他Schema,我们可以将Schema理解为多个Query组成一张表...Query 查询语法和格式受 Schema 约束, Query,Mutation,Subscription Query 三种类型,分别对应不同业务场景。...REST POST请求则直接包含我们要发送数据。所以GraphQL 那里客户端 可以拿自己想拿数据,但REST api 只能请求 server 定义api。...我们可以利用代码来实现,但对于项目中所有角色,尤其一些没有代码经验的人,让他们去看代码实现是非常痛苦,自动化测试本质能够帮我们快速回归,验证完成功能是否受到影响,并且你测试代码或工具能够让每个角色轻松理解并能够快速简单使用...,不是秀你代码多么炫酷用了多么复杂算法,一切以实用为本。

2K30

搭建一个低配版Mock Server

写在前面 通过阅读本文,你将对Mock使用有一定了解,对前后端分离概念有了更深一步认识,对Koa使用有一定了解。本文先从背景出发去抛出“我们为什么要用Mock?”...我们为什么要使用Mock?...如果对Mock不是很熟,我们大致会这样做,把相关返回信息写在JSON文件中或者js文件中,然后通过引入或者读取相关文件来做这件事 JSON文件形式 { "data": { "name":...Mock数据单元测试 这里我结合Mocha(测试框架)、chai(断言)、supertest(模拟http测试)对MockAPI进行了一个单元测试,具体的如下: const app = require...', function(done) { supertest .get('/') .expect(200, done); }); }); describe

1.1K30

使用mocha编写node服务单元测试

可以看到上述代码定义了一个describe组来测试getResult函数功能,里面有两个测试用例分别测试了入参正常和非法入参情况。 测试用例中如何来判断函数是否正常执行呢?...mocha提供了两种方法来解决这个问题: promise 我们可以返回一个promise给mocha框架,等到promise状态改变时再执行断言: it('测试异步函数', function() {...done it方法第二个入参一个执行函数,我们可以给这个函数传入一个done方法,等到异步返回后再去显示地调用done方法,告诉mocha该测试用例执行完毕。...node服务接口返回数据是否正常,也就是说进行一个整体性测试,那么 superTest 就是一个非常好选择。...superTest可以帮助我们去请求本地 koa 或者 express这类web框架所编写路由接口,而且对接口返回状态码、数据等进行断言校验。

3.9K20

十个书写Node.js REST API最佳实践(下)

译者注:mock 和 stub 都是测试方法 有个可以帮你进行Node.js REST API进行黑盒测试模块叫做supertest。...一个简单测试用例,其使用测试运行器mocha检查一个用户是否被返回,可以这么用: const request = require('supertest') describe('GET /user/:...通常,覆盖尽量多系统状态方式来书写你测试代码个很好方法。然而,有时候你会发现自己处于一个需要准确知道系统状态情况,因此,你可以果断点,同时达到更高测试覆盖率。...做基于JWT状态认证 由于你REST API必须状态,你认证层也是。从这点来看,JWT (JSON Web Token)完美的。...例如,如果你在使用Koa,有个叫koa-ratelimit包。 需要注意,基于不同API提供者,时间窗口也会有所不同——例如,Github用一个小时,Twitter用15分钟。

2.3K00

造一个 supertest 轮子

前言 supertest 一个短小精悍接口测试工具,比如一个登录接口测试用例如下: import request from 'supertest' it('登录成功', () => { request...这个库挺小,设计也不错,还是 TJ Holowaychuk 写!今天就带大家一起实现一个 supertest 轮子吧,做一个测试框架! 思路 在写代码前,先根据上面的经典例子设计好整个框架。...我们还注意到一点 expect 函数有可能用来检查状态码 status ,有的检查返回 body,还有些检查 headers ,因此每次调用 expect 函数除了要往 this....其实这些处理也不是我想出来 superagent 里对它自己 Agent 类处理,这里就照抄过来而已 :) 使用 Class 继承 上面都是用 prototype 来实现继承,非常蛋疼。...希望这样可以由浅入深地带大家看一遍源码,同时又不会有太大心理负担 :) 为什么只写 10 篇呢?一个原因想尝试一下别的领域了和看看书了。

66520

「改版」网站改版SEO清单:不要丢失流量

6、更新所有内部链接 新网站上HTML链接应指向新网站,不是旧网站。 这句话听起来没错,当然,这句话本来就没错。但往往在实际中,对于这个问题,处理起来是非常麻烦事情。...尤其,当页面量级大了之后,如果不处理,那每天上十万、二十五蜘蛛来抓取网站时,经常遇到301跳转状态码。这会影响搜索引擎对网站评分。...处理低质量页面问题,由于技术或其他因素,导致有很多空短页面,借此机会,全部都处理掉。 注:千万别将已经删除页面301到新首页,既然删除,就返回404即可。...8、确保有404页面 针对这个问题,就不多说,一个网站必须有404页面,而且错误页面返回状态码必须为404。...注:直接访问404页面的URL,返回状态码应该是200,因为该404页面存在,所以,该页面的状态200(估计很多新手都不是很清楚) 9、制作网站地图并提交给搜索引擎 新站点出来后,必须制作网站地图

1.5K60

Jest实战:单元测试与服务测试

需求与解决思路 一名好大前端开发人员,一定是一名好“配置工程师”(滑稽脸)。最近刚到团队,被安排给 vemoJS 和 cloudbase-cli 写测试用例,并且要保证覆盖率!...这时候,就需要 mock 对应请求库,返回我们构造好数据,以让函数逻辑走下去,提高测试覆盖率。...这方面很多人可能会用 supertest 这个库来测试。...在做调研时候发现,jest 下载量和更新记录远远高于 supertest,而且更纯粹。为什么这么说呢?它提供一种测试组织形式,其它可以借助第三方库和工具实现。...服务测试思路就是:在 test 目录下启动简单 http 服务器和静态服务器,然后利用 axios 访问启动服务器,拿到返回结果,再利用断言写法,检查即可。

3.3K10

如何优雅处理Restful

一、背景 首先,大家都会思考为什么要做统一格式处理呢?...,天天"牙痛”很要命, 需要解决上述问题,需要前后端人员都能认识与了解接口设计规范重要性。...{ /*** 通用部分 100 - 599***/ // 成功请求 SUCCESS(200, "successful"), // 重定向 REDIRECT(301...,这里着重参考一下Http定义规范: 常见HTTP状态码如: 200 - 请求成功; 301 - 资源(网页等)被永久转移到其它URL; 404 - 请求资源(网页等)不存在; 500 - 内部服务器错误...状态码类型 code区间 类型 含义 1 100-199 信息 服务器接收到请求,需要请求者继续执行操作 2 200-299 成功 请求被成功接收并处理 3 300-399 重定向 需要进一步操作以完成请求

92830

Nginx状态

2XX状态码 2XX类型状态码表示一个HTTP请求成功,最典型就是200 # 200状态码 # 这个使我们最希望看到状态码,表示一个HTTP请求得到了正确响应,在此不做模拟测试 3XX状态码...# 3XX 类型状态码主要表示HTTP请求URL重定向行为,最常见3XX状态码有301,302,304 301 测试用例 # URL: 永久性重定向,在Nginx中通过rewrite指令结合permanent...既然如此,那为什么还要同时存在301和302呢? # 它们主要区别在于搜索引擎。...当客户端主动断开连接时候,Nginx就会返回499状态码。按照这个状态定义,只要在Nginx返回结果之前主动断开客户端连接,就应该会复现这个状态码。...; 小结 1XX # 表示临时响应并需要请求者继续执行操作状态200 # 表示一个HTTP请求得到了正确响应 301 # 永久重定向 302 # 临时重定向 401

1.1K41

字节跳动最爱考前端面试题:计算机网络基础

200 状态码 如果资源未更新,那么告诉浏览器直接使用缓存获取资源 (5)问:HTTP 常用状态码及使用场景?...TCP 报文序列化 为什么不是两次?...但是之后这个包如果到达了服务端,那么服务端接收到了,然后发送相应数据表,就建立了链接,但是此时客户端已经关闭连接了,所以带来了链接资源浪费。 为什么不是四次?...1个 MSL 保证四次挥手中主动关闭方最后 ACK 报文能最终到达对端 1个 MSL 保证对端没有收到 ACK 那么进行重传 FIN 报文能够到达 为什么四次不是三次?...长轮询则表现为如果没有变,就不返回,而是等待变或者超时(一般十几秒)才返回,如果没有返回,客户端也不需要一直发请求,所以减少了双方压力。

82220

【Nginx33】Nginx学习:重写更改请求模块

Nginx学习:重写更改请求模块 今天内容又是在 Nginx 学习中非常重要一块。可以说,只要你做 PHP 开发,那么肯定会接触过今天内容。为什么这么说呢?...html 中,因为判断条件目录 iftest1 是否存在,明显这是无法通过第二个则会返回 iftest2 字符串,因为条件判断成功了。...permanent,返回带有 301 代码永久重定向 如果正则表达式包含“}”或“;”字符,整个表达式应该用单引号或双引号括起来 这个指令很神奇,return 全部都是跳转,但它如果指定路径不是以...这里和 return 不同地方在于,return 301 或 302 ,它会响应状态码和 Location 并由浏览器发送请求,所以服务端这边理论上没错,只是客户端报错。...解释器一个简单虚拟堆栈机器。

46530

如何在Ubuntu上使用Jenkins自动构建

它只有两个测试:第一个检查HTTP状态,它预计为200.第二个不是真正测试,而是一个总是通过控件。...这是一个快速有效解决方案,可以与Jenkins一起使用,只需要很少先决条件,但更难以维护和更新。 你可以拉出官方Docker镜像并从那里运行Jenkins。...每个陈述都必须在它自己行中,Jenkinsfile你所执行步骤核心。一些常见步骤: 运行脚本或代码命令。 编译代码。 运行测试。 从源控件中推或拉。 转移档案。...您可以选择任意数量时间,对于此示例,将选择一分钟。 测试失败(不稳定管道) 到目前为止,一切都应该按预期工作不会出错。但是遇到错误会发生什么? app.js在本地工作站中编辑。...以下一些最常见屏幕。 单击齿轮图标以进入存储库菜单。在那里,单击左侧边栏中状态

7.9K10

Go 语言 Web 编程系列(十五)—— 通过 ResponseWriter 接口创建 HTTP 响应

首先是状态行,在状态行中包含了 HTTP 协议版本和响应状态码,200 OK 表示响应成功,更多状态码信息(常见有 404、403、500、301 等)可以网上查看下 HTTP 协议或者阅读 HTTP...),并且其返回 response 指针,这也是为什么在处理器方法声明时候 Request 指针类型, ResponseWriter 不是,实际上在底层,响应对象也是指针类型(因为在应用代码中需要设置响应头和响应实体...,该方法支持传入一个整型数据用来表示响应状态码,如果不调用该方法的话,默认响应状态 200 OK。...401 未认证状态码(注意在运行时 w 代表对应 response 对象实例,不是接口): func Error(w http.ResponseWriter, r *http.Request)...虽然返回的确实是合法 JSON 格式数据,但是内容类型依然 text/plain,不是 application/json,要返回这个格式响应头,需要设置响应头才能实现: // 返回 JSON 格式数据

5.4K41

如何清除Chrome浏览器301缓存?

问题描述     HTTP响应码301表示永久转移,开发者在网站测试过程中应该尽量避免使用301永久跳转,而是使用临时转移码302,如果不慎使用了301跳转,则Chrome浏览器会本地缓存该永久跳转...此时如果想让跳转前网址直接响应200不是301已经不行了,按照常规缓存清理方法无法清除301缓存,对网站开发造成了干扰。本文将介绍一种清除301缓存方法。 2....如果跳转前网址响应码已经改成200了,但是请求该网址仍然返回301,解决办法如下: 单击Chrome浏览器右上角菜单 ,依次选择“更多工具”- “开发者工具”,单击“开发者工具”窗口右上角设置按钮...,界面如下: 选中复选框“Disable cache(while DevTools is open)”,不要关闭“开发者工具”窗口,在地址栏窗口中打开跳转前网址,此时该网址应该返回期望响应码...200

5.4K110

开源项目 dirsearch 一些阅读感想

1、解决 Debug 程序参数从命令行获取 debug 模式则是将一个 py 脚本作为程序入口,笔者开始有点不知所措,突然临机一动,用下面这个代码不就解决了?...() 有的网站系统,对请求无效 WEB 页面的 HTTP Request,返回 200 状态码,当然,界面一个友好界面;有的网站则会返回一个 301/302/307 跳转。...当 Scanner 访问这些随机字符串路径时,如果服务器返回状态 404,则 Scanner 不继续分析,直接返回;服务器返回状态不是 404,Scanner 会发送第二次请求,依然随机字符串路径...Response 状态码为 200 ,dirsearch 不会对该目录进行迭代遍历,访问 http://www.test.com/admin/ 时 HTTP Response 状态200,...笔者意思,有时候,访问 http://www.test.com/admin HTTP Response 状态码为 301;访问 http://www.test.com/admin/ HTTP Response

3.1K31

3xx HTTP状态终极指南

2xx成功:这些状态关于对请求理解和接收。比如说,200表示OK。 3xx重定向:这类状态码表示需要一些特殊目的动作来完成请求。比如说,301表示redirection。...303状态码对SEO来说并不重要。但是,当另一个URL可以被推荐不是一个已经访问过URL时,它可以帮助提高用户友好度并实现营销目的。...308和301重定向唯一区别是是否可以修改HTTP方法。301重定向允许用户代理修改使用HTTP方法,308状态码则意味着重定向HTTP请求方法不可改变。...一些浏览器仍然无法识别308重定向,并向用户显示空页面,不是重定向页面(例如,Internet Explorer 11)。...这就是为什么301永久重定向最好,因为它有更好支持和对SEO友好。308HTTP状态支持度少可怜,搜索爬虫并不总是能识别它。 重定向对比 300重定向对SEO很重要。

2.1K20
领券