网站做ssl证书有风险上海到北京物流

当前位置: 首页 > news >正文

网站做ssl证书有风险,上海到北京物流,网站建设佰首选金手指二,推进政务服务网站一体化建设文章目录 http协议http协议格式GET请求POST请求http客户端实现 http协议 http协议是应用层协议#xff0c;一般建立在tcp协议的基础之上#xff08;当然你的实现非要基于udp也是可以的#xff09;#xff0c;也就是说http协议的数据收发是通过tcp协议的。 http协议也分为h… 文章目录 http协议http协议格式GET请求POST请求http客户端实现 http协议 http协议是应用层协议一般建立在tcp协议的基础之上当然你的实现非要基于udp也是可以的也就是说http协议的数据收发是通过tcp协议的。 http协议也分为head和body两部分但是我们一般说的html中的和标记不是http协议的头和身体它们都是http协议的body部分。
http协议格式 请求报文 GET或POST 请求的url路径一般是去掉域名的路径 HTTP协议版本号\r\n 字段1名: 字段1值\r\n 字段2名: 字段2值\r\n … 字段n名 : 字段n值\r\n \r\n http协议包体内容也就是说http协议由两部分组成包头和包体包头与包体之间使用一个\r\n分割由于http协议包头的每一行都是以\r\n结束所以http协议包头一般以\r\n\r\n结束。 响应报文 GET或POST 响应码 HTTP协议版本号\r\n 字段1名: 字段1值\r\n 字段2名: 字段2值\r\n… 字段n名 : 字段n值\r\n \r\n http协议包体内容GET请求 举个例子比如我们在浏览器中请求 http://www.archforce.cn/ 这个网址这是一个典型的GET方法浏览器组装的http数据包格式如下 GET / HTTP/1.1 Host: www.archforce.cn Connection: keep-alive Cache-Control: max-age0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36 Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,/;q0.8,application/signed-exchange;vb3;q0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q0.9 Cookie: Hm_lvt_cbf861d48d9cddec571cd12e72a1609f1625847951; Hm_lpvt_cbf861d48d9cddec571cd12e72a1609f1625848189 If-None-Match: 3e05c-KllfhaoJ3NEVgn4MeRRVM0morj0回应包 HTTP/1.1 304 OK Server: nginx/1.12.2 Date: Fri, 09 Jul 2021 16:31:12 GMT Connection: keep-alive如果GET请求带参数那么一般是附加在请求的url后面参数与参数之间使用分割例如请求http://www.archforce.cn/?param1value1param2value2param3value3我们看下这个请求组装的的http协议包格式 GET /?param1value1param2value2param3value3 HTTP/1.1 Host: www.archforce.cn Connection: keep-alive Cache-Control: max-age0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36 Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,/;q0.8,application/signed-exchange;vb3;q0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q0.9 Cookie: Hm_lvt_cbf861d48d9cddec571cd12e72a1609f1625847951; Hm_lpvt_cbf861d48d9cddec571cd12e72a1609f1625849203 If-None-Match: 3dfe9-2kN4Gmh10x7woAVHkm336SXibw请求响应包格式 HTTP/1.1 304 OK Server: nginx/1.12.2 Date: Fri, 09 Jul 2021 16:53:35 GMT Connection: keep-alivePOST请求 当用户发请HTTP POST请求时POST的数据放在什么位置呢 我们在12306网站 http://www.4399.com/ 中登陆输入用户名和密码 用户binbin_erices163.com 密码123456Wireshark设置http.request.methodPOST 过滤POST请求 POST /ptlogin/login.do?v1 HTTP/1.1 Host: ptlogin.4399.com Connection: keep-alive Content-Length: 492 Cache-Control: max-age0 Origin: http://ptlogin.4399.com Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36 Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,/;q0.8,application/signed-exchange;vb3;q0.9 Referer: http://ptlogin.4399.com/ptlogin/loginFrame.do?postLoginHandlerdefaultredirectUrldisplayModepopupcssbizIdappIdwww_homegameIdusernameexternalLoginqqpasswordmainDivIdpopup_login_divautoLoginfalseincludeFcmInfofalseqrLogintrueuserNameLabel4399%E7%94%A8%E6%88%B7%E5%90%8DuserNameTip%E8%AF%B7%E8%BE%93%E5%85%A54399%E7%94%A8%E6%88%B7%E5%90%8DwelcomeTip%E6%AC%A2%E8%BF%8E%E5%9B%9E%E5%88%B04399level0regLevel4v1625851237354 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q0.9 Cookie: home4399yes; UM_distinctid17a8c4907acb-03fd12d521e1a9-4313f6f-100200-17a8c4907ad800; Hm_lvt_334aca66d28b3b338a76075366b2b9e81625851234; Hm_lpvt_334aca66d28b3b338a76075366b2b9e81625851234; _gprp_c; USESSIONIDe01ffc99-af9b-49d3-96a8-ed25addc20d1loginFromuframepostLoginHandlerdefaultlayoutSelfAdaptingtrueexternalLoginqqdisplayModepopuplayoutverticalbizIdappIdwww_homegameIdcssredirectUrlsessionIdmainDivIdpopup_login_divincludeFcmInfofalselevel0regLevel4userNameLabel4399%E7%94%A8%E6%88%B7%E5%90%8DuserNameTip%E8%AF%B7%E8%BE%93%E5%85%A54399%E7%94%A8%E6%88%B7%E5%90%8DwelcomeTip%E6%AC%A2%E8%BF%8E%E5%9B%9E%E5%88%B04399sec1passwordU2FsdGVkX19Ch0%2FiMqtxiFo3gEmqd46gG5kYggkMI%2Bg%3Dusernamebinbin_erices%40163.com其中passwordU2FsdGVkX1%2BxNjF6YOTUt%2B0QbDEgoeWtonbF3bbVZqA%3Dusernameerices 就是我们的POST数据但是大家需要注意的以下几种不要搞错 我的用户名是binbin_erices163.com到POST里面变成binbin_erices%40163.com其中%40是符号的16进制转码形式。这个码表可以参考这里》 http://www.w3school.com.cn/tags/html_ref_urlencode.html 这里有多个变量他们之间使用符号分割但是请注意的是这不意味着传递多个POST变量时必须使用符号分割只不过这里是浏览器html表单输入用户名和密码的文本框是html表单的一种分割多个变量采用的默认方式而已。你可以根据你的需求来自由定制只要让服务器知道你的解析方式即可。 http客户端实现 如果掌握以上说的http协议你就可以自己通过代码组装http协议发送http请求了也是各种开源http库的做法。我们先简单地介绍一下如何模拟发送http。举个例子我们要请求 http://www.baidu.com/那么我们可以先通过域名得到ip地址即通过socket API gethostbyname()得到http://www.baidu.com/的ip地址由于http服务器默认的端口号是80有了域名和ip地址之后我们使用socket API connect()去连接服务器然后根据上面介绍的格式组装成http协议包利用socket API send()函数发出去如果服务器有应答我们可以使用socket API recv()去接受数据接下来就是解析数据先解析包头和包体。 开源HTTPRequest库