HTTP协议认识

转载地址:http://blog.sina.com.cn/s/blog_12df1b9e60102vw1l.html


HTTP协议概念

HTTP协议(HyperText TransferProtocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

请求信息格式

●请求行,例如GET /images/logo.gifHTTP/1.1,表示从/images目录下请求logo.gif这个文件。

●(请求)头,例如Accept-Language: en

●空行

●可选的消息体

响应信息格式

●响应行,例如HTTP/1.1 304 Not Modified ,协议/版本号 状态码 状态消息

●(响应)头,例如 ETag: 9181448958830740071

●空行

●可选的消息体

二、HTTP状态码

状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.

HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

1XX 提示信息 - 表示请求已被成功接收,继续处理

2XX 成功 - 表示请求已被成功接收,理解,接受

3XX 重定向 - 要完成请求必须进行更进一步的处理

4XX 客户端错误 - 请求有语法错误或请求无法实现

5XX 服务器端错误 - 服务器未能实现合法的请求

常见的状态码信息

200 OK 表明该请求被成功地完成,所请求的资源发送回客户端

301 Moved Permanently 请求的URL已移走。Response中应该包含一个Location URL,说明资源现在所处的位置

302 Found 重定向,新的URL会在response中的Location中返回,浏览器将会自动使用新的URL发出新的Request

304 Not Modified 代表上次的文档已经被缓存了, 还可以继续使用

400 Bad Request 客户端请求与语法错误,不能被服务器所理解,告诉客户端,它发送了一个错误的请求

401 Unauthorized 需要客户端对自己认证

403 Forbidden 服务器收到请求,但是拒绝提供服务

404 Not Found 请求资源不存在(输错了URL)

500 Internal Server Error 服务器发生了不可预期的错误

503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

三、HTTPRequest header

使用Fiddler 能很方便的查看Reques header, 点击Inspectors tab->Request tab-> headers 如下图所示

HTTP协议认识

Cache头域

1)If-Modified-Since

作用:把浏览器端缓存页面的最后修改时间发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间(Last-Modified)进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中

2)If-None-Match

作用: If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。当用户再次请求该资源时,将在HTTP Request中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag.使用这样的机制将提高网站的性能

3)Cache-Control

作用: 用来指定Response-Request遵循的缓存机制

Client头域

1)Accept

作用: 浏览器端可以接受的媒体类型,

例如: Accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html也就是我们常说的html文档,如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(nonacceptable),通配符 * 代表任意类型

2)Accept-Encoding:

作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate)

3)Accept-Language

作用: 浏览器申明自己接收的语言

4)User-Agent

作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.

Cookie/Login头域

1)Cookie

作用: 最重要的header, 将cookie的值发送给HTTP 服务器

Miscellaneous头域

1)Referer:

作用:提供了Request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTPReferer中统计出每天有多少用户点击我主页上的链接访问他的网站

Transport头域

1)Connection

例如: Connection: keep-alive当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

例如: Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。

2)Host(发送请求时,该报头域是必需的)

作用: 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的

例如: 我们在浏览器中输入:http://www.china.edu.cn/index.html

浏览器发送的请求消息中,就会包含Host请求报头域,如下:

Host:http://www.china.edu.cn

四、HTTPResponse header

同样使用Fiddler 查看Response header, 点击Inspectors tab->Response tab-> headers 如下图所示

HTTP协议认识

Cache头域

1)Date

作用: 生成消息的具体时间和日期

2)Expires

作用: 浏览器会在指定过期时间内使用本地缓存

3)Vary

作用:

例如: Vary: Accept-Encoding

Cookie/Login头域

1)P3P

作用: 用于跨域设置Cookie, 这样可以解决iframe跨域访问cookie的问题

2)Set-Cookie

作用: 非常重要的header, 用于把cookie 发送到客户端浏览器,每一个写入cookie都会生成一个Set-Cookie

Entity头域

1)ETag
作用: 和If-None-Match 配合使用

2)Last-Modified

作用: 用于指示资源的最后修改日期和时间,和If-Modified-Since 配合使用

3)Content-Type
作用:WEB服务器告诉浏览器自己响应的对象的类型和字符集

4)Content-Length

作用:指明实体正文的长度,以字节方式存储的十进制数字来表示。在数据下行的过程中,Content-Length的方式要预先在服务器中缓存所有数据,然后所有数据再一股脑儿地发给客户端

5)Content-Encoding

作用:WEB服务器表明自己使用了什么压缩方法(gzip,deflate)压缩响应中的对象。

6)Content-Language

作用: WEB服务器告诉浏览器自己响应的对象的语言者

Miscellaneous头域

1)Server

作用:指明HTTP服务器的软件信息

2)X-AspNet-Version:

作用:如果网站是用ASP.NET开发的,这个header用来表示ASP.NET的版本

3)X-Powered-By:

作用:表示网站是用什么技术开发的

Transport头域

1)Connection

例如: Connection: keep-alive当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

例如: Connection: close 代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。

Location头域

1)Location

作用: 用于重定向一个新的位置, 包含新的URL地址,当status code=304,返回新的地址让客户端再次以这个地址请求



在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其中3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程中遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境中安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹中的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值