• http.header.Set()与Add()区别;


    在Go语言中进行HTTP请求时,http.Header对象表示HTTP请求或响应的头部信息。http.Header是一个map[string][]string类型的结构,用于存储键值对,其中键表示HTTP头字段的名称,值是一个字符串切片,可以存储多个相同名称的头字段值。

    http.Header提供了两个主要的方法来设置头部字段的值:SetAdd,它们之间有一些重要的区别:

    1. Set方法:
      • Set 方法用于设置指定头字段的值,如果该头字段已经存在,则会覆盖之前的值。
      • 这意味着无论你调用多少次 Set 方法,最终该头字段只会包含最后一次调用时设置的值。
      • 通常用于覆盖某个特定头字段的值,例如设置自定义的HTTP头字段。
    header.Set("Content-Type", "application/json")
    
    • 1
    1. Add方法:
      • Add 方法用于向指定头字段添加一个新的值,而不会覆盖已有的值。
      • 这允许你为同一个头字段设置多个不同的值,这在某些情况下很有用,例如设置多个Set-Cookie头字段。
    header.Add("Set-Cookie", "session_id=123")
    header.Add("Set-Cookie", "user_id=456")
    
    • 1
    • 2

    综上所述,Set 方法用于设置头字段的单个值,而 Add 方法用于向头字段添加多个不同的值。根据你的需求和HTTP头部的具体要求,选择合适的方法来操作HTTP头字段。
    当使用http.HeaderAdd方法向头部字段添加多个值时,你可以通过http.Header对象的Get方法来获取这些值,并打印它们。以下是一个示例代码,演示如何打印使用Add方法添加的多个值:

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	header := http.Header{}
    	header.Add("Set-Cookie", "session_id=123")
    	header.Add("Set-Cookie", "user_id=456")
    
    	// 获取头字段 "Set-Cookie" 的所有值
    	cookies := header["Set-Cookie"]
    
    	// 打印每个值
    	for _, cookie := range cookies {
    		fmt.Println(cookie)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这个示例中,header["Set-Cookie"] 返回一个字符串切片,其中包含了所有添加到 “Set-Cookie” 头字段的值。然后,使用循环遍历该切片并打印每个值。

    注意:这里使用的是http.Header的map形式来获取头字段的值,如果要获取单个值,也可以使用Get方法,如下所示:

    cookieValue := header.Get("Set-Cookie")
    fmt.Println(cookieValue)
    
    • 1
    • 2

    使用Get方法将返回头字段的第一个值,而不是整个切片。

    项目中遇到的问题:

    使用Set方法无法成功访问
    使用Add方法添加header,httpRequest请求成功。

  • 相关阅读:
    在实际工作中如何开展性能测试?
    微积分 - 导数
    Softing推出基于OPC UA与MQTT连接的OT/IT集成解决方案
    NFT Insider #63:The Sandbox与时代杂志达成合作,YGG成立西班牙subDAO
    代码坏味道与重构之可变数据和发散式变化
    Linux静态IP、DNS配置(VM的三种网络模式)
    以下关于ASP.NET网页结构的叙述中正确的是
    谨慎redis的timeout参数
    java实际项目反射、自定义注解的运用实现itext生成PDF的详细应用教程
    HTML网页规划与设计【冬季奥林匹克运动会——带报告5200字】HTML+CSS+JavaScript
  • 原文地址:https://blog.csdn.net/ALEX_CYL/article/details/132800763