go | gin 重定向路由重定向

web 重定向

重定向有一点要注意,重定向是在客户端那边执行的,一次服务器只能响应一次请求。但是要注意路由重定向
路由重定向是在服务器内部完成重定向资源请求

package main

import (
	"github.com/gin-gonic/gin"
	"fmt"
)

/*
func main() {
    r := gin.Default()

    r.GET("/test", func(c *gin.Context) {
        c.Redirect(302, "https://www.google.com")
    })

    r.Run() // listen and serve on 0.0.0.0:8080
}
*/

/*
	curl -L -X POST http://localhost:8080/submit
	{"message":"hello, world"}hello, world.....

*/

func main() {
	r := gin.Default()

	r.POST("/submit", func(c *gin.Context) {
		// 处理 POST 请求

		c.Redirect(302, "/success")
	})

	r.POST("/success", func(c *gin.Context) {
		// c.String(200, "Success!")
		//c.JSON(200, gin.H{"message": "hello, world"})
		c.Header("Cache-Control", "no-cache, no-store, must-revalidate") // HTTP 1.1.
		c.Header("Pragma", "no-cache")                                   // HTTP 1.0.
		c.Header("Expires", "0")    
		c.String(200, fmt.Sprintf("hello, world....."))
		
	})

	r.Run() // listen and serve on 0.0.0.0:8080
}


/*
	路由重定向
	使用 HandleContext

	 curl -L -X GET http://localhost:8080/test1			其中 -L 用于处理服务器返回的重定向,当服务器返回的3xx状态码时,使用了-L 参数,curl会自动重新发送请求到服务器在Location 头中指定新的URL
	hello, world... my name is zhangbuda....

*/

/*
func main(){
	r := gin.Default()

	r.GET("/test1", func(c *gin.Context){
		c.Request.URL.Path = "/test2"
		r.HandleContext(c)
	})

	r.GET("/test2", func(c *gin.Context){
		c.String(200, fmt.Sprintf("hello, world... my name is zhangbuda....\n"))
	})

	r.Run(":8080")
}
*/

经过抓包分析,下面介绍重定向

重定向

注意,如果要用curl 要让自动重定向,需要添加参数 -L
例如 curl -L -X POST url

在这里插入图片描述

再来分析,路由重定向

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/521595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言自定义类型变量——枚举(enum)

一.枚举的定义和声明 字面意思,枚举就是一一列举,把可能的取值一一列举,在我们现实生活中有许多可以列举的事物,例如:一周七天,一年四季,性别,月份,三原色等等。当我们需…

【SpringCloud】Nacos 注册中心

目 录 一.认识和安装 Nacos1.Windows安装1. 下载安装包2. 解压3. 端口配置4. 启动5. 访问 2.Linux安装1. 安装JDK2. 上传安装包3. 解压4. 端口配置5. 启动 二.服务注册到 nacos1. 引入依赖2. 配置 nacos 地址3. 重启 三.服务分级存储模型1. 给 user-service 配置集群2. 同集群优…

Spring Boot-01-通过一个项目快速入门

官方参考文档:Spring Boot Reference Documentation 0. 概述 Spring的缺点: 1. 配置繁琐:虽然Spring的组件代码是轻量级,但它的配置却是重量级的。 2. 依赖繁琐:项目的依赖管理也是一件耗时耗力的事情。分析要导入哪…

在单交换机局域网中,不同网段的主机通信探秘

在理解局域网中不同网段主机之间的通信之前,我们首先要明白网络的基本组成和工作原理。局域网(LAN)是一个封闭的网络环境,通常由交换机(Switch)作为核心设备连接网络中的各个主机。当我们谈论不同网段的主机…

C语言 | Leetcode C语言题解之第13题罗马数字转整数

题解: 题解: int romanToInt(char* s) {int symbolValues[26];symbolValues[I - A] 1;symbolValues[V - A] 5;symbolValues[X - A] 10;symbolValues[L - A] 50;symbolValues[C - A] 100;symbolValues[D - A] 500;symbolValues[M - A] 1000;int a…

天龙八部_暗黑机制_人面桃花_单机架设搭建

一. 搭建成功视频演示 天龙八部_暗黑机制_人面桃花_单机架设搭建 二. 一些文件截图 完整教程和搭建文件获取: https://githubs.xyz/y24.html 三. 搭建步骤 安装虚拟机虚拟机打开一键端,然后登录root,密码:123456启动./run 脚本 &#xff0…

【201】Java8读取JSON树形结构并插入到MySQL数据库表中

我写了一个 maven 项目的 Demo,用来演示 JAVA8 如何读取 JSON 文件树形结构,并将这种树形结构保存到 MySQL 中。 json文件 city.json {"name": "山东省","sub": [{"name": "青岛市","sub"…

Java | Leetcode Java题解之第14题最长公共前缀

题目: 题解: class Solution {public String longestCommonPrefix(String[] strs) {if (strs null || strs.length 0) {return "";}int minLength Integer.MAX_VALUE;for (String str : strs) {minLength Math.min(minLength, str.length…

汇川PLC学习Day4:电机参数和气缸控制参数

汇川PLC学习Day4:伺服电机参数和气缸控制参数 一、伺服电机参数二、气缸参数1. 输入IO映射(1)输入IO映射(2) 输入IO触摸屏标签显示映射 2. 输出IO映射(1)输出IO映射(2) …

摄影杂记一

摄影小白,最近买了一台微单,型号是佳能R10,加上18-150套机镜头和佳能RF 50 F1.8定焦镜头。开始学习摄影。 PS:摄影穷三代,单反毁一生。嘿嘿。 一、分镜头拍摄四步提升法 B站:六斤 拍视频三件事&#xff1…

4.2.k8s的pod-标签管理、镜像拉取策略、容器重启策略、资源限制、优雅终止

一、标签管理 1.标签在k8s中极其重要,大多数资源的相互关联就需要使用标签;也就是说,资源的相互关联大多数时候,是使用标签进行关联的; 2.其他作用,在k8s集群中,node节点的一些操作比如污点及污…

【Java设计模式】创建型——工厂方法模式

目录 背景/问题解决方案思路方案 图解简单工厂模式/静态工厂模式工厂方法模式 代码示例:图形工厂意图主要解决何时使用如何解决关键代码 工厂模式的优点工厂模式的缺点使用场景注意事项 背景/问题 在软件设计中,我们经常遇到需要创建不同类型对象的情况…

NzN的数据结构--栈的实现

在前面我们已经学习了哪些线性数据结构呢?大家一起来回顾一下:C语言学过的数组,数据结构中的线性表和顺序表和链表。那我们今天再来介绍数据结构里的两个线性结构--栈和队列。 目录 一、栈的概念及结构 二、用数组实现栈 1. 栈的初始化和…

linux--进程创建

执行了3次ps -f ,ps -f的父进程的ID(PPID)都是一样的,即bash. 实际上Linux上这个bash就是不断的复制自身,然后把复制出来的用exec替换成想要执行的程序(比如ps); 运行ps,发现ps是bash的一个子进程;原因就是bash把自己复制一份,然后替换成ps; 替换,这里就体现了写时拷贝的意义,…

ETL中如何自定义规则

一、ETL中的规则 在使用规则之前我们先来了解一下什么是规则,ETL中规则在很多组件中都能看见,可以理解为按照事前约定好的逻辑去执行,规则可以使得数据更加的规范统一,同时也不需要去纵向的修改底层代码,只需要动态编…

自动驾驶汽车关键技术_感知

自动驾驶汽车关键技术|感知 附赠自动驾驶学习资料和量产经验:链接 两套标准 分别由美国交通部下属的国家高速路安全管理局(NationalHighwayTraffic Safety Administration ,NHSTA) 和国际汽车工程师协会(Societyof Automotive Engineers&am…

复现chatgpt_ros,需要openapi key

1. 前置工作: 现在ubuntu系统是20.04ros1,现在用docker新建并安装ros2: 最简单的,用大佬的一键安装: wget http://fishros.com/install -O fishros && . fishros 其次自己装…

代码随想录刷题——5双指针法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言5.1 移除元素(3.30)5.2 翻转字符串(3.30)5.3 替换数字(3.30)5.4 翻转字符串里的单词(3.3…

FlutterFlame游戏实践#08 | 打砖块 -关卡设计

theme: cyanosis 本文为稀土掘金技术社区首发签约文章,30天内禁止转载,30天后未获授权禁止转载,侵权必究! Flutter\&Flame 游戏开发系列前言: 该系列是 [张风捷特烈] 的 Flame 游戏开发教程。Flutter 作为 全平台 的 原生级 渲…

SQL注入---POST注入

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一. POST提交概述 在Webshell文章中介绍过post提交和get提交的区别,这里不再赘述 post提交和get提交的区别: get方式提交URL中的参数信息,post方式则是将信…