URL的语法及HTTP报文

大多数URL方案的URL语法都建立在这个由9部分构成的通用格式上:

scheme://user:[email protected]:port/path;params?query#frag

方案:http或者https

主机与端口:http://www.nihao.com:80/index.html

用户名和密码:ftp://joe:[email protected]/pub    http://joe:[email protected]

路径:http://www.nihao.com/image/1.jpg

这个URL中的路径为/image/1.jpg, 路径是服务器定位资源时所需的信息,可以用字符“/”将

HTTPURL的路径组件划分成一些路径段(path segment),每个路径段都有自己的参数(param)

组件

参数:很多时候负责解析URL的应用程序需要这些协议参数来访问资源,否则另一端的服务器可

能就不会为请求提供服务,或者更糟糕提供错误服务,为了正确与服务器进行交互,就得向服务

器上的应用程序提供它们所需的输入参数 比如:

ftp://prep.edu/pub/gnu;type=d

http://www.joes.com/hammers;sale=false/index.html;graphics=true

HTTP URL的路径组件可以分为若干路径段,每段都可以有自己的参数

查询字符串:很多资源,比如数据库服务,都可以通过提问题或查询来缩小所请求资源类型范围

假设joe的五金店在数据库中维护着一个未售货物的清单,并可以通过清单进行查询,以判断产品

是否有货,就可以用下面的URL来查询web数据库网关,看看编号为12731的条目是否有货:

http://www.joes.com/inventory-check.cgi?item=12731

?右边的内容被称为查询(query)组件,URL的查询组件和标识网关资源的URL路径组件一起被发

送给网关资源,基本上可以将网关当作访问其他应用程序的访问点

查询可以有多个:http://www.joes.com/inventory-check.cgi?item=12731&color=blue

片段:有些资源类型比如HTML除了资源级外,还可以做进一步的划分,比如对一个带有章节的

大型文档来说,为了引用部分资源或资源的一个片段,URL支持使用片段(frag)组件来表示一个

资源内部的片段,比如URL可以指向HTML文档中一个特定的图片或小节

片段挂在URL的右手边,最前面有一个字符“#”

HTTP服务器通常只处理整个对象,而不是对象的片段,客户端不能将片段传送给服务器,浏览器

从服务器获得了整个资源之后,会根据片段来显示你感兴趣的那部分资源

HTTP报文由三个部分组成:对报文进行描述的起始行(start line) ,包含属性的首部(header)

块,以及可选的包含数据的主体(body)部分

报文的主体(或者就称为主体)是一个可选的数据块,可以包含文本或二进制数据,也可以为空

上图Content-Type说明主体是纯文本文档, Content-Length说明主体有多大19个字节

所有HTTP报文都可以分为两类:请求报文(request message)和响应报文(response message)

请求报文的格式:

    <method> <request-URL> <version>

    <headers>

    <entity-body>

响应报文的格式:

    <version> <status> <reason-phrase>

    <headers>

    <entity-body>

时间: 2024-10-25 06:48:08

URL的语法及HTTP报文的相关文章

URL之 URL的语法

一.URL的语法 协议 - URL 的完整格式 - SCHEME: 方案,指定以哪种协议从服务器获取指定资源;方案名不区分大小写.常见方案: HTTP.HTTPS.FTP.MAILTO.RTSP.FILE.NEWS.TELNET等 主机/端口号 - HOST: 主机名,资源所在服务器的IP地址或者域名(需要DNS转换为IP地址) - PORT: 端口号,每项服务在服务器上都对应一个监听端口号 - 严格来说,计算机中对外提供的服务程序可以绑定到任一空闲端口上,从而实现监听客户端连接请求的任务. -

nginx之旅(第五篇):URL重写介绍、URL重写场景、URL重写语法

nginx之旅(第五篇):URL重写 一.URL重写介绍 URL重写是指将一个URL请求重新写成网站可以处理的另一个URL的过程.这样说可能不是很好理解,举个例子来说明一下,在开发中可能经常遇到这样的需求,比如通过浏览器请求的http://localhost:8080/getUser?id=1,但是需要通过SEO优化等等原因,需要把请求的地址重写为http://localhost:8080/getUser/1这样的URL,从而符合需求或者更好的被网站阅读. 当遇到这种请求的时候,就需要使用到Ur

web报表工具FineReport的JS编辑框和URL地址栏语法简介

JS编辑框: 1.FineReport的js. 作为一款BS产品,browser端的JavaScript是必不可少的. FineReport中的js是已经调用了finereport.js的. 大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形

URL基本语法

1.URL全称为Uniform Resource Locator,即统一资源定位符.对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它 2.URL的一般格式为:scheme :// hostname[:port] / path / [;parameters][?query]#fragment ①scheme,通信协议方案,下表列出集中常用的Scheme. file:资源是

sqlalchemy源代码阅读随笔(4):url。py 阅读

在_to_string中,有 _rfc_1738_quote(text): 这个函数.这个主要是遵循 RFC 1738的规则.对传入的信息(主要是用户名或者密码)进行格式匹配.其代码就一行: return re.sub(r'[:@/]', lambda m: "%%%X" % ord(m.group(0)), text) 啥事rfc 1738呢? Network Working Group T. Berners-LeeRequest for Comments: 1738 CERNCat

Java网络编程-URI和URL

前提 前面的一篇文章<Java中的Internet查询>分析完了如何通过IP地址或者主机名确定主机在因特网中的地址.任意给定主机上可能会有任意多个资源,这些资源需要有标识符方便主机之间访问对方的资源,因此这篇文章深入分析一下URL和URI. URI URI全称是Uniform Resource Identifier,也就是统一资源标识符,它是一种采用特定的语法标识一个资源的字符串表示.URI所标识的资源可能是服务器上的一个文件,也可能是一个邮件地址.图书.主机名等.简单记为:URI是标识一个资

HTTP报文

引用 学习Web开发不好好学习HTTP报文,将会“打拳不练功,到老一场空”,你花在犯迷糊上的时间比你沉下心来学习HTTP的时间肯定会多很多. HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEAD.OPTIONS.PUT.TRACE.不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttpMethodFilter

URL 编码

简介 当我们每天上网冲浪时,有一些技术我们无时无刻不在面对.有数据本身(网页),数据的格式化,能够让我们获取数据的传输机制,以及让Web网络能够真正成为Web的基础及根本:从一页到另一页的链接.这些链接都是URL. 通用URL语法 我敢说每个人在其一生中至少见过一次URL.比如"http://www.google.com",就是一个URL.一个URL是一个统一资源定位器 ,事实上它指向了一个网页(大多数情况下).实际上,自从1994年的第一版规范开始,URL就有了一个良好定义的结构.

URI、URL 和 URN

URI 是统一资源 标识符,而 URL 是统一资源 定位符.因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL.这是因为 URI 还包括一个子类,即统一资源 名称 (URN),它命名资源但不指定如何定位资源.上面的 mailto. news 和 isbn URI 都是 URN 的示例. URI 和 URL 概念上的不同反映在此类和 URL 类的不同中. 此类的实例代表由 RFC 2396 定义的语法意义上的一个 URI 引用.URI 可以是绝对的,也可以是相对的.对