http中url的组成和首部字段详解

2024-02-16 12:48
文章标签 详解 http url 组成 首部

本文主要是介绍http中url的组成和首部字段详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

url组成部分
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

scheme 协议方案

http            #超文本转移协议,我们浏览网站都是这个
https           #安全的http连接,在应用层和传输层中间加了SSL层
mailto          #通过该链接可以在Internet中发送邮件
ftp             #文件传输协议,传输文件
rtsp.rtspu      #这个可能看见的少,是因为这是流传输,譬如视频流

user: password
权限访问的时候使用帐号密码,譬如你的网站没配置好权限,有的时候你打开的时候就需要输入帐号密码
host
简单的来说就是IP或者主机名domain
port
端口,我们访问的端口,譬如80 443 8080等等
path
访问资源的路径,相当于组件路径
params
参数,但是这个不常用,指定一些参数,譬如指定传输方式
query
查询参数,譬如我们get username=widuu&password=11111
frag
html资源片段,譬如html文档过大的时候,frag定位到html的一部分

注意
url中有特殊的字符,大家别瞎用,譬如空格是%20,所以你创建文件名称或者是拼接url的时候一定要注意,否则就404或者500了,这种还好多!

HTTP报文

基本概念
  • 报文的流动方向,是客户端在上游,就像小溪的上有源头,然后服务端在底部,我们访问主机的时候,报文是向下传输的是从客户端向下流入(inbound),当服务端返回信息的时候,方向就反了,服务端在上游,客户端在底部,然后还是向下流出(outbound),这就是报文流。
报文的组成部分

始行 (start line)
起始行和首部之间有两个字符分割(CRLF)就是回车符和换行符分割
起始行就是 GET / HTTP/1.1 然后其实是用\r\n结尾分割

请求报文格式

method:request-url:version
headersbody

响应报文

version:status:reason-phrases
headerbodymethod          #请求方法譬如GET POST HEAD DELETE 
version         #HTTP版本,现在基本都是1.1
status          #状态码  返回响应状态码 200 404 500 503
reason-phrase   #状态短语,譬如响应200的OK
  1. 首部(header块)
    headers #每个首部都是以:分割的,这部分是可以扩展的,你譬如Accept-Language 允许的语言
  2. body(主体部分)
    body #实体部分,譬如响应返回信息,返回一个图片

状态码

整体范围                已定义范围           分  类
100-199             100 - 101           信息提示
200-299             200 - 206            成功
300-399             300 - 305           重定向
400-499             400 - 415           客户端错误
500-599             500 - 505           服务端错误

详细的解释

100    Continue     收到了请求,服务器在收到请求之后必须进行响应
101                 根据客户端的指定切换首部所列的协议200     OK          请求没问题,主题部分包含了所有请求
201                 创建服务器对象的请求(PUT)
202                 请求已经被服务器接收,但是未对执行动作做出响应
203                 资源的副本,无法对资源有关的原信息首部做验证
204                 响应报分中有若干首部和一个状态码,一般是在刷新时候出现
205                 告诉浏览器清楚浏览器上所有的html的表单元素
206                 范围请求成功301                 重定向,一般网站优化用的最多,说明url已经被移除了
302301类似,但是告诉临时定位资源以后使用老url,一般post数据返回302
303                 告诉客户端用另一个url获取资源,新的url响应报文的location
304                 这个说明文件未修改,使用本地的
305                 通过代理来访问资源
306                 未使用
307301类似,根据客户端使用的Location的URL来临时定位资源

我感觉太多了大家可以查看一下状态码大全

首部字段
请求部分

Connection          #譬如:Connection:keep-alive保持持久连接(以前的连接是先连接-处理事物-断开-再连接一直循环下去,keep-alive就一次连接,然后一直保持活跃状态)Accept:*/*          #Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 告诉服务端客户端接收媒体类型Accept-Encoding     #告诉服务端发送编码方式Accept-Encoding:gzip,deflate,sdchAccept-Language    #Accept-Language:zh-CN,zh;q=0.8,ja;q=0.6,en;q=0.4告诉服务端支持的语言Accept-Charset      #告诉服务器能够发送哪些字符集Cache-Control      #Cache-Control:max-age=0报文传送缓存最大时间HOST               #请求服务器的主机名和端口号Referer            #当前请求URI的URL文档User-Agent         #应用程序名称

响应部分

Access-Control-Allow-Origin # Access-Control-Allow-Origin:*是否支持跨域请求Date                #Date:Wed, 26 Mar 2014 12:08:40 GMT 响应时显示报文创建的时间Content-Encoding   #响应客户端gzip Content-Encoding:gzipContent-Type       #服务器返回的主体body类型 Content-Type:text/html; charset="UTF-8"Content-Disposition #主题文件描述Content-Disposition:inline; filename="shBrushVb.js"Content-Length      #响应主题的长度Content-Length:2741,可以判断数据是否接收完成Transfer-Encoding   #客户端可靠传输的编码,类似Transfer-Encoding:chunked都是动态处理Server              #Server:nginx/1.4.4服务器的ETag                #主体文件的标识符,譬如七牛就用这个判断文件的唯一性,而且还给了算法ETag:"FqYBjMdmt-xBSJNh4uyRQ7NpB2T3"Via                 #这个是报分经过的代理和网关,例如如下我用的七牛云存储的 X-Via:1.1 lysx179:88 (Cdn Cache Server V2.0), 1.1 czdx85:8104 (Cdn Cache Server V2.0), 1.1 bjja97:10 (Cdn Cache Server V2.0) Connection          # Connection:Close  请求连接关闭,百度等网站常见If-None-Match       #如果Etag改变了,才执行Location            #服务器告诉浏览器,已经转移的位置Vary                #Vary:CookieExpires             #主体不在有效,从原始端再次获取主体的日期和时间Last-Modified       #实体最后一次被修改日期和时间

转载:https://blog.csdn.net/birthmarkqiqi/article/details/46637115

这篇关于http中url的组成和首部字段详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714568

相关文章

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

6.1.数据结构-c/c++堆详解下篇(堆排序,TopK问题)

上篇:6.1.数据结构-c/c++模拟实现堆上篇(向下,上调整算法,建堆,增删数据)-CSDN博客 本章重点 1.使用堆来完成堆排序 2.使用堆解决TopK问题 目录 一.堆排序 1.1 思路 1.2 代码 1.3 简单测试 二.TopK问题 2.1 思路(求最小): 2.2 C语言代码(手写堆) 2.3 C++代码(使用优先级队列 priority_queue)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

LabVIEW FIFO详解

在LabVIEW的FPGA开发中,FIFO(先入先出队列)是常用的数据传输机制。通过配置FIFO的属性,工程师可以在FPGA和主机之间,或不同FPGA VIs之间进行高效的数据传输。根据具体需求,FIFO有多种类型与实现方式,包括目标范围内FIFO(Target-Scoped)、DMA FIFO以及点对点流(Peer-to-Peer)。 FIFO类型 **目标范围FIFO(Target-Sc

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMessageDialog()方法 3.1

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓