首页
学习
活动
专区
工具
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.3K20

初识字节流+实现缓冲字节流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.3K80
  • 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测试)对Mock的API进行了一个单元测试,具体的如下: const app = require...', function(done) { supertest .get('/') .expect(200, done); }); }); describe

    1.2K30

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

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

    4K20

    十个书写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.4K00

    造一个 supertest 轮子

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

    71820

    腾讯云七层CLB重定向完全解析:配置、安全、实践优化及常见错误

    当一个资源永久性地移动到了新的URL时,服务器会返回301状态码。这意味着客户端应当更新其书签和引用,因为将来再次访问旧URL时将不再有效。...307 307状态码明确指出客户端应当使用相同的请求方法(如GET、POST等)重定向到新URL,而不是像301/302状态码那样默认将请求方法更改为GET。...此时在客户端测试到LB:客户端收到了STGW返回了502状态码,为什么不是"Empty reply from server"?...80; server_name domain.com; ...略}此时客户端收到的是RS 403状态码,而非STGW的502,但没必要浪费不必要的业务流量,能不返回就不返回,能让LB阻断就让...此时我们通过VIP的方式,访问LB 80监听器:LB收到请求后匹配默认域名,但域名下没有任何RS服务,STGW代答了200状态码,返回内容长度为0。

    1.2K2719

    「改版」网站改版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.4K10

    如何优雅的处理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 重定向 需要进一步的操作以完成请求

    95230

    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.2K41

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

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

    86020

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

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

    63830

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

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

    8K10

    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.9K41

    Java每日一练(2017720)

    (回复【前端资料】获取下载链接) ●答案公布时间:为每期发布题目的第二天 ★【新】回复“测试题”获取昨天发布的软件工程师初级阶段测试题答案 ★【新】回复“学习资料”获取java学习电子文档 ★【新】需要求职简历模板的可以加小编微信...B SuperTest.class C test.SuperTest D test.SuperTest.class 不管你会不会!...上期答案: (单选题) 1、设int x=1,float y=2,则表达式x/y的值是:() A 0 B 1 C 2 D 以上都不是 正确答案是:D 不同基本数据类型转化与运算byte-short-int-long-float-double...---- (单选题) 3、系统在调用重载函数时,能作为确定哪个重载函数被调用的依据是() A 函数返回类型 B 参数个数 C 函数名称 D 参数名称 正确答案是:B 解析:重写的方法名,参数数目相同,参数类型兼容...A 解析: String类型传递是值传递,函数前后值不改变;而字符数组ch为对象,为引用传递,发生改变。

    63960

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

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

    5.8K110
    领券