Go语言之进阶篇请求报文格式分析

1、 请求报文格式分析

示例:

package main

import (
	"fmt"
	"net"
)

func main() {
	//监听
	listener, err := net.Listen("tcp", ":8000")
	if err != nil {
		fmt.Println("Listen err = ", err)
		return
	}

	defer listener.Close()

	//阻塞等待用户的连接
	conn, err1 := listener.Accept()
	if err1 != nil {
		fmt.Println("Accept err1 = ", err1)
		return
	}

	defer conn.Close()

	//接收客户端的数据
	buf := make([]byte, 1024*4)
	n, err2 := conn.Read(buf)
	if n == 0 {
		fmt.Println("Read err = ", err2)
		return
	}

	fmt.Printf("#%v#", string(buf[:n]))

}

执行结果:

在浏览器中输入: 127.0.0.1:8000

请求报文: GET or  POST

#GET / HTTP/1.1
Host: 127.0.0.1:8000
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9

  

原文地址:https://www.cnblogs.com/nulige/p/10322992.html

时间: 2024-08-29 22:00:31

Go语言之进阶篇请求报文格式分析的相关文章

HTTP POST请求报文格式分析与Java实现文件上传

时间 2014-12-11 12:41:43  CSDN博客 原文  http://blog.csdn.net/bboyfeiyu/article/details/41863951 主题 HTTPHttpComponents 在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较麻烦的事情就是构造文件上传的HTTP报文格式,这个格式虽说也比较简单,但也

tcp、udp、ip、icmp报文格式分析

TCP .UDP .IP. ICMP协议报文格式分析 Tcp报文格式: Wireshark抓包如图: 源端口/目的端口(16bit): 在TCP报文中包涵了源端口/目的端口,源端口标识了发送进程,目的端口标识了接收方进程.由上图可以看出在此报文中我们的源端口号是54160, 目的端口是cichlid(1377). 序列号(32bit): Sequence Number这个是发送序列号,用来标识从源端向目的端发送的数据字节流,它表示在这个报文端中的第一个数据字节的顺序号,序列号是32位的无符号类型

http协议基础 4. http请求报文格式

1.http请求报文的格式 请求报文的起始行包括 :请求方法 (Get Post Head等八种请求方式) + 请求URL (此处为URL定位到请求的地方)  + 请求的协议 图中为http1.0 请求头也就是图中首部包括:头部字段名 :头部字段名的值   (之前遇到过一个跨域访问接口的问题,也是在响应的报文头部加上字段之后可以实现跨域访问,之后我会整理一篇来阐述) 比如常见的: Accept:表示客户端接受的内容类型,按照先后顺序表示客户端接收数据的先后次序 X-Requested-With:

HTTP请求报文格式

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. 请求报文 一个HTTP请求报文由请求行(request line).请求头部(header).空行和 请求数据 4个部分组成,下图给出了请求报文的一般格式. (1)请求行 请求行由请求方法字段.URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔.例如,GET /index.html HTTP/1.1. HTTP协议的请求方法有GET.POST.HEAD

Go语言之进阶篇TCP相互通信

1.TCP相互通信 服务端示例: tcp_server.go package main import ( "fmt" "net" ) func main() { //监听 listener, err := net.Listen("tcp", "127.0.0.1:8000") if err != nil { fmt.Println("err = ", err) return } defer listener

Go语言之进阶篇爬百度贴吧并发版

1.爬百度贴吧并发版 示例: package main import ( "fmt" "net/http" "os" "strconv" ) //爬取网页内容 func HttpGet(url string) (result string, err error) { resp, err1 := http.Get(url) if err1 != nil { err = err1 return } defer resp.Body.

Go语言之进阶篇连接mysql

一.Go连接mysql 1.mysql驱动 地址:https://github.com/Go-SQL-Driver/MySQL 说明: sql.Open()函数用来打开一个注册过的数据库驱动,Go-MySQL-Driver中注册了 mysql这个数据库驱动,第二个参数是DNS,它是Go-MySQL-Driver定义的一些数据库链接和配置信息. 2.下载mysql驱动包方法 在LiteIDE中,选中"github.com/go-sql-driver/mysql" 这行代码,再点编译---

Spring Cloud进阶篇之Eureka原理分析

前言 之前写了几篇Spring Cloud的小白教程,相信看过的朋友对Spring Cloud中的一些应用有了简单的了解,写小白篇的目的就是为初学者建立一个基本概念,让初学者在学习的道路上建立一定的基础. 从今天开始,我会持续更新几篇Spring Cloud的进阶教程. Eureka简介 Eureka是Netflix开发的服务发现框架,本身就是一个基于REST的服务.Spring Cloud将它集成在其子项目spring-cloud-netflix中,用来实现服务的注册与发现功能. Eureka

HTTP请求、响应报文格式

HTTP请求报文格式: HTTP请求报文主要由请求行.请求头部.请求正文3部分组成 1,请求行 由3部分组成,分别为:请求方法.URL(见备注1)以及协议版本,之间由空格分隔 请求方法包括GET.HEAD.PUT.POST.TRACE.OPTIONS.DELETE以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的 协议版本的格式为:HTTP/主版本号.次版本号,常用的有HTTP/1.0和HTTP/1.1 2,请求头部 请求头部为请求报文添加了一