相关文章推荐
小胡子的日光灯  ·  URL 重写模块配置参考 | ...·  2 月前    · 
玩篮球的柿子  ·  联系我们_中华人民共和国驻美利坚合众国大使馆·  6 月前    · 
活泼的瀑布  ·  做图卡顿?这样提升PS运算速度_搜狐汽车_搜狐网·  1 年前    · 
玩命的拖把  ·  计算机专业英语词汇 1695 词 - ...·  2 年前    · 
有腹肌的大白菜  ·  Oracle ...·  2 年前    · 
想旅行的双杠  ·  GPUImage2(一)集成与使用 - 简书·  2 年前    · 
Code  ›  重定向POST请求带来的问题(307的应用)开发者社区
post require 重定向
https://cloud.tencent.com/developer/article/2106144
傻傻的香烟
2 年前
作者头像
切图仔
0 篇文章

重定向POST请求带来的问题(307的应用)

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 生如夏花绚烂 > 重定向POST请求带来的问题(307的应用)

重定向POST请求带来的问题(307的应用)

作者头像
切图仔
发布 于 2022-09-14 15:22:03
1.1K 0
发布 于 2022-09-14 15:22:03
举报

我们在重新向时会用到两个状态码 301:永久重定向 302:临时重定向 这两种方式在不涉及到数据传输时没有什么问题,一旦涉及到数据传输时,这两种方式可能达不到我们预期的效果 提交表单到A页面,但A页面仅作为“中介”使用,并不处理表单提交的数据,而是将请求转发给B页面,B页面在进行数据处理

刚看到这个需求时或许你会想到301重定向的方式 如PHP里面 header("Location: $url") ; Node.js Koa框架的 ctx.response.redirect('url');

我们一起来看下在涉及到数据传输时的301重定向会有什么问题以Node.js为例 A页面=server.js B页面=server2.js A

const path = require('path');
const http = require('http');
const Koa = require('koa');
const Router = require('koa-router');
var bodyParser = require('koa-bodyparser');
let server = new Koa();
server.listen(8080);
server.use(bodyParser());
let router = new Router();
router.post('/redirect',async (ctx,next)=>{
     ctx.response.redirect('http://127.0.0.1:8081/'); 
     ctx.status = 301
server.use(router.routes())

B

const path = require('path');
const http = require('http');
const Koa = require('koa');
const Router = require('koa-router');
var bodyParser = require('koa-bodyparser');
let server = new Koa();
server.listen(8081);
server.use(bodyParser());
let router = new Router();
router.post('/',async (ctx,next)=>{
    console.log(ctx.request.body)
    ctx.body='helloword'
server.use(router.routes())

为了演示方便,我们将A,B页面分别监听不同的端口,8080,8081 在A页面我们定义了post路由 redirect ,当被请求时会自动跳转到B,而B接受了post数据并打印然后输出 helloword 作为成功的标识 使用postMan调试

可以看到什么都没有输出 并且返回了404因为此时请求的各种都没有发送给B,A页面的重定向默认是get请求,而B页面只注册了post路由

从这里就可以看出301重定向的时候无法将数据发送给即将重定向的页面 如果实际中真的存在这种需求怎么办?难得就没有办法解决了吗? no 今天的主角还没有介绍---- 307 如下是基维百科对 307 的解释

307 Temporary Redirect是HTTP协议中的一个状态码(Status Code)。可以理解为一个临时的重定向。 但该响应代码与302重定向有所区别的地方在于,收到307响应码后,客户端应保持请求方法不变向新的地址发出请求。

 
推荐文章
小胡子的日光灯  ·  URL 重写模块配置参考 | Microsoft Learn
2 月前
玩篮球的柿子  ·  联系我们_中华人民共和国驻美利坚合众国大使馆
6 月前
活泼的瀑布  ·  做图卡顿?这样提升PS运算速度_搜狐汽车_搜狐网
1 年前
玩命的拖把  ·  计算机专业英语词汇 1695 词 - echeverra
2 年前
有腹肌的大白菜  ·  Oracle Union操作时表结构字段类型不一致查询语句 -ORA-01790: expression must have same datatype as corresponding exp_oracle union 对字段类型_左眼看成爱的博客-CSDN
2 年前
想旅行的双杠  ·  GPUImage2(一)集成与使用 - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号