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

网络原理-HTTP补充1

HTTP请求

        认识URL

                URL基本格式

        平时我们俗称的"⽹址"其实就是说的URL统⼀资源定位符.互联⽹上的每个⽂件都有⼀个唯⼀的URL,它包含的信息指出⽂件的位置以及浏览器应该怎么处理它.     

        http: 协议方案名,常见有http,https,jdbc.

        user:pass :登陆信息.现在的⽹站进⾏⾝份认证⼀般不再通过URL进⾏了.

        www.example.jp :服务器地址.此处是⼀个"域名",域名会通过DNS系统解析成⼀个具体的IP地址.

        80 :服务器端口号,当端⼝号省略的时候,浏览器会根据协议类型⾃动决定使⽤哪个端⼝.例如http协议默认使⽤80端⼝,https协议默认使⽤443端⼝.

        dir/index.html :带层次的文件路径,通过文件路径对文件进行访问.

        uid=1 :查询字符串(query string).本质是⼀个键值对结构.键值对之间使⽤&分隔.键和值之间使用=分隔.是客户端给服务器传递信息的重要途经.

        ch=1 :片段标识,⽚段标识主要⽤于⻚⾯内跳转.

        URL中可以省略的部分:

        1.协议方案名:省略后默认为http://

        2.ip地址/域名:在HTML中可以省略(比如mg,link,script,a标签的src或者href属性).省略后表⽰服务器的ip/域名与当前HTML所属的ip/域名⼀致.

        3.端口号:省略后如果是http协议,端⼝号⾃动设为80;如果是https协议,端⼝号⾃动设为443.

        4.带层次的文件路径:省略后默认为/.

        5.查询字符串/片段标识:省略后认为无需进行这两部分操作.

                关于URL encode

        像/ ?这样的字符已经被URL特殊处理了,因此这些字符不能随意出现,但是当某个参数中包含这些字符时,就需要对字符进行转译.

        转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不⾜4位直接处理),每2位做⼀位,前⾯加上%,编码成%XY格式.例如:c++会被转义为c%2B%2B.

                        

        认识方法

方法说明支持的协议版本
GET获取资源1.0,1.1
POST传输实体主体1.0,1.1
PUT传输文件1.0,1.1
HEAD获得报文首部1.0,1.1
DELETE删除文件1.0,1.1
OPTIONS询问支持的方式1.1
TRACE追踪路径1.1
CONNECT要求用隧道协议链接代理1.1
LINK建立和资源之间的联系1.0
UNLINK断开链接关系1.0

        这些方法的语义,只是开发者文档中的一个软性要求.在实际开发时,程序员用这个方法干了什么,开发者文档没有进行硬性规定.

        1.GET方法

        GET是最常⽤的HTTP⽅法.常⽤于获取服务器上的某个资源.
在浏览器中直接输⼊URL,此时浏览器就会发送出⼀个GET请求.
另外,HTML中的link,img,script等标签,也会触发GET请求.

        访问百度主页:

        

        GET请求的特点        
1.⾸⾏的第⼀部分为GET
2.URL的query string可以为空,也可以不为空.
3.header部分有若⼲个键值对结构.
4.body部分为空.

        2.POST方法

        POST⽅法也是⼀种常⻅的⽅法.多⽤于提交⽤⼾输⼊的数据给服务器(例如登陆⻚⾯).

        登录某网页:

        

        POST请求的特点:

         1.⾸⾏的第⼀部分为POST
2.URL的query string⼀般为空(也可以不为空)
3.header部分有若⼲个键值对结构.

         4.body部分一般不为空.

        GET与POST的区别

        1.GET与POST没有本质区别,因为开发者文档中没有对这两个方法进行硬性规定.

        2.从常用角度来看:

        1)语义不同,GET常用于获取资源,POST常用于给服务器提交资源.

        2)GET的body⼀般为空.需要传递的数据过query string传递,POST的query string⼀般为空,需
要传递的数据通过body传递.

        3.GET被建议实现幂等性,而POST无要求.(幂等性为:如果多次请求得到的结果⼀样,就视为请求是幂等的).        

        4.GET可以被缓存,而POST不能缓存.(继承幂等性).

        3.其他方法

        PUT与POST相似,只是具有幂等特性,⼀般⽤于更新
DELETE删除服务器指定资源
OPTIONS返回服务器所⽀持的请求⽅法
HEAD类似于GET,只不过响应体不返回,只返回响应头
TRACE回显服务器端收到的请求,测试的时候会⽤到这个
CONNECT预留,暂⽆使⽤

        认识请求报头

        报头的整体格式,也是键值对形式.每个键值对占一行,键和值之间使用分号分割.

        HOST:标识服务器主机的地址和端口,少数情况中和URL的ip端口不一样.

        Content-Length:标识body中数据的长度.

        Content-Type:标识body中的数据格式.常见选项有:

                application/x-www-form-urlencoded: form表单提交的数据格式.此时body的格式形如:

 title=test&content=hello

                multipart/form-data: form表单提交的数据格式(在form标签中加上enctyped="multipart/form-data").通常用于提交图片/文件,body格式形如:

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3Trw
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

                application/json:数据为json格式.body格式形如:

{"username":"123456789","password":"xxxx","code":"jw7l","uuid":"d110a05ccde64b16}

        User-Agent(简称UA):标识浏览器/操作系统的属性,可以根据不同的操作系统或浏览器来真是不同的页面,如:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0

        Refer:表示这个页面是从哪个页面跳转来的.

        Cookie:Cookie中存储了⼀个字符串,这个数据可能是客⼾端⾃⾏通过JS写⼊的,也可能来⾃于服务器.

        关于Cookie:

        1.Cookie从哪里来?一般为第一次访问服务器时,服务器返回的.

        2.Cookie到哪去?Cookie会存储在浏览器本机的硬盘上,后续每次访问服务器都会带上Cookie.不同的客户端/浏览器,访问同一个服务器,保存到Cookie是不同的.

        3.Cookie中存储的是程序员自行规划的键值对数据.

        4.Cookie在本地硬盘中按照不同的域名进行存储.

        5.Cookie用来在客户端保存数据,其中最重要的是用户的身份标识.

        认识请求正文

        正⽂中的内容格式和header中的Content-Type密切相关.上⾯也罗列了三种常⻅的情况.下⾯可以通过抓包来观察这⼏种情况:

        1.application/x-www-form-urlencoded

        对上传头像进行抓取:

POST https://gitee.com/profile/upload_portrait_with_base64 HTTP/1.1
Host: gitee.com
Connection: keep-alive
Content-Length: 107389
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
Accept: */*
X-CSRF-Token: 6ROfZGr4Y7Qx8td1TuKCnrG8gbODLCSUqUBZSw2b+ac=
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: https://gitee.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://gitee.com/HGtz2222
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: oschina_new_user=false; user_locale=zh-CN; yp_riddler_id=1ce4a551-a160-4


avatar=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAPgAAAD4CAYAAADB0Ss

        2.multipart/form-data

        对上传简历功能进行抓取:

POST https://v.bitedu.vip/tms/oss/upload/file HTTP/1.1
Host: v.bitedu.vip
Connection: keep-alive
Content-Length: 293252
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjFiYThjMDM5L
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary8d5Rp4eJgrUSS3
Accept: */*
Origin: https://v.bitedu.vip
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://v.bitedu.vip/personInf/student?userId=665
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: rememberMe=true; username=18691491410; Admin-Token=eyJhbGciOiJIUzUxMiJ9

------WebKitFormBoundary8d5Rp4eJgrUSS3wT
Content-Disposition: form-data; name="file"; filename="李星亚 Java开发⼯程师.pdf"
Content-Type: application/pdf
%PDF-1.7

1 0 obj
<</Names <</Dests 4 0 R>> /Outlines 5 0 R /Pages 2 0 R /Type /Catalog>>
endobj
3 0 obj
<</Author ( N v~N) /Comments () /Company () /CreationDate (D:20201122145133+06'
endobj
13 0 obj
<</AIS false /BM /Normal /CA 1 /Type /ExtGState /ca 1>>
endob

        3.application/json

        对登录进行抓取:

POST https://v.bitedu.vip/tms/login HTTP/1.1
Host: v.bitedu.vip
Connection: keep-alive
Content-Length: 105
sec-ch-ua: " Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS
Content-Type: application/json;charset=UTF-8
Access-Control-Allow-Origin: *
Accept: application/json, text/plain, */*
Access-Control-Allow-Headers: Content-Type, Content-Length, Authorization, Accep
Origin: https://v.bitedu.vip
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://v.bitedu.vip/login
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: rememberMe=true; username=123456789
{"username":"123456789","password":"xxxx","code":"u58u","uuid":"9bd8e09ea27b48cd}

http://www.dtcms.com/a/423127.html

相关文章:

  • 做外贸相关的网站全面的vi设计公司
  • 如何构建高效 AI 智能体
  • 9.25训练赛+Codeforces1054 (Div. 3)
  • 老Java项目访问提示orcale 19c ORA-01017: 用户名/口令无效; 登录被拒绝
  • 目标检测:yolov7算法在RK3588上部署
  • Maya Python: 安装pymel
  • 全景网站开发待遇南宁logo设计公司
  • 北京工商局网站怎么做增资网易代理暴雪
  • 制造行业订单全生命周期管理数仓项目实战
  • 《深度学习入门:基于Python的理论与实现》第7章 卷积神经网络笔记
  • 网络游戏编程 - Socket 技术以及应用 - 上 -《了解游戏网络基础知识》
  • 珠海建网站的网络公司网站名称格式
  • 舆情观察类文章写作指南与新浪舆情通应用
  • C语言——深入理解函数声明定义和调用访问
  • 网站开发大约多少钱制作一个网站的步骤是什么
  • RabbitMQ (一)简单模式
  • 阿里巴巴 Java 开发手册 v1.2.0
  • Leetcode+Java+单调栈
  • Word和WPS文字如何从特定的页开始编号(页码)?
  • EDSR模型
  • thinkphp做中英文网站网站跟app区别
  • 6. 数据库设计基础知识
  • 【nginx平滑升级演示】
  • 桥梁缺陷检测数据集:腐蚀、剥落、渗透等5类,3k+图像,yolo标注
  • 上交提出单图生成3D场景方法SceneGen:单图输入,多资源输出,3D 合成性能飙升的“秘密武器”!
  • 百度验证网站济南网络科技公司
  • NO5.硼:火箭专家
  • 细化处理refinement process
  • 第四部分:VTK常用类详解(第120章 vtkWarpTo变形到类)
  • Day01_Linux移植基础