栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Go中解析HTTP标头

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Go中解析HTTP标头

内置的解析器位于textproto中。您可以直接使用它,也可以添加伪造的HTTP请求标头并在http包中使用ReadRequest。无论哪种方式,您都需要将数据包装到bufio.Reader中,这里我只是假设我们从字符串开始。

使用textproto:

logEntry := "Content-Encoding: gziprnLast-Modified: Tue, 20 Aug 2013 15:45:41 GMTrnServer: nginx/0.8.54rnAge: 18884rnVary: Accept-EncodingrnContent-Type: text/htmlrnCache-Control: max-age=864000, publicrnX-UA-Compatible: IE=Edge,chrome=1rnTiming-Allow-Origin: *rnContent-Length: 14888rnExpires: Mon, 31 Mar 2014 06:45:15 GMTrn"// don't forget to make certain the headers end with a second "rn"reader := bufio.NewReader(strings.NewReader(logEntry + "rn"))tp := textproto.NewReader(reader)mimeHeader, err := tp.ReadMIMEHeader()if err != nil {    log.Fatal(err)}// http.Header and textproto.MIMEHeader are both just a map[string][]stringhttpHeader := http.Header(mimeHeader)log.Println(httpHeader)

和http.ReadRequest:

logEntry := "Content-Encoding: gziprnLast-Modified: Tue, 20 Aug 2013 15:45:41 GMTrnServer: nginx/0.8.54rnAge: 18884rnVary: Accept-EncodingrnContent-Type: text/htmlrnCache-Control: max-age=864000, publicrnX-UA-Compatible: IE=Edge,chrome=1rnTiming-Allow-Origin: *rnContent-Length: 14888rnExpires: Mon, 31 Mar 2014 06:45:15 GMTrn"// we need to make sure to add a fake HTTP header here to make a valid request.reader := bufio.NewReader(strings.NewReader("GET / HTTP/1.1rn" + logEntry + "rn"))logReq, err := http.ReadRequest(reader)if err != nil {    log.Fatal(err)}log.Println(logReq.Header)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号