file协议与Http协议,HTTP请求与AJAX请求

2023-11-12

一 什么是file协议:

file协议主要用于访问本地计算机中的文件,好比通过Windows的资源管理器中打开文件或者通过右键单击‘打开’一样。

基本格式:

file:///文件路径

file:///C:/Users/CLi/AppData/Local/Temp/WindowsLiveWriter1627300719/supfiles52F410/wangdan-se-436963[2].jpg

等价于

C:/Users/CLi/AppData/Local/Temp/WindowsLiveWriter1627300719/supfiles52F410/wangdan-se-436963[2].jpg 

二 什么是HTTP协议:

http协议是Hyper Text JTransfer Protocol,即超文本阐述协议的缩写。是用来从万维网服务器传输超文本到本地浏览器的传送协议,基于TCP/IP通信协议来传输数据。http协议工作于客户端-服务器架构上,浏览器作为http客户端通过url向http服务器端发送请求,服务器接收到请求后,向客户端发送请求。

http使用统一资源标识符URI来传输数据和建立连接(关于url格式参见文末补充):

https://mp.csdn.net/mdeditor

2.1 http请求方式:

GET  请求指定的页面信息,并返回实体主体。
HEAD     类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST     向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT  从客户端向服务器传送的数据取代指定的文档的内容。
DELETE   请求服务器删除指定的页面。
CONNECT  HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS  允许客户端查看服务器的性能。
TRACE    回显服务器收到的请求,主要用于测试或诊断。

2.2 http报文详解

http的报文分为两种:
 	1.请求报文  发送请求
 	2.响应报文  响应请求

2.2.1 请求报文
组成:

  1. 请求行: 设置路径 请示方式 以及协议名等
  2. 请求头: 浏览器告诉服务器的信息,声明客户端的内容(我是什么内核,平台等)
  3. 存放需要发送的信息,post的请求时需要发送的数据,get是直接拼接在路径里面的

一个浏览器端的HTTP请求一般有四部分组成:
1. 请求的方法或动作,比如是GET还是POST请求
2. 正在请求的URL
3. 请求头,包含一些客户端环境信息,身份验证信息
4. 请求体即请求的正文,包含客户提交的字符串信息,表单信息等
在这里插入图片描述

2.2.1.1 http请求的过程

1.建立TCP连接
2.web浏览器向服务器发送请求命令
3.web浏览器发送请求头信息
4.web浏览器发送请求体
5.web服务器应答
6.web服务器发送应答头信息
7.web服务器向浏览器发送数据
8.web服务器关闭TCP连接

2.2.2 响应报文

  1. 状态行(响应行) 声明协议,状态码等
  2. 响应头:服务器告诉浏览器的一些信息,响应体的类型等
  3. 响应体: 服务器返回给浏览器的数据

在这里插入图片描述

2.2.2.1 响应头/响应头类型

Content-type: 请求体/响应体的类型:

MediaType,即是Internet Media Type,互联网媒体类型;也叫做MIME类型,在Http协议消息头中,使用Content-Type来表示具体请求中的媒体类型信息。

常见的媒体格式类型如下:

text/html : HTML格式
text/plain :纯文本格式      
text/xml :  XML格式
image/gif :gif图片格式    
image/jpeg :jpg图片格式 
image/png:png图片格式

以application开头的媒体格式类型:

application/xhtml+xml :XHTML格式
application/xml     : XML数据格式
application/atom+xml  :Atom XML聚合格式    
application/json    : JSON数据格式
application/pdf       :pdf格式  
application/msword  : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType=””>中默认的encType,
form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

另外一种常见的媒体格式是上传文件之时使用的:

multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
 以上就是我们在日常的开发中,经常会用到的若干content-type的内容格式。

然后需要说的是:状态码的问题

1XX : 请求已被接受,需要继续处理

2xx : 代表请求已成功被服务器接收、理解、并接受

3xx : 重定向

4xx : 浏览器端的请求错误

5xx : 服务器端的错误

关于网络基础的知识,建议参考以为大佬写的博客计算机网络基础:这是一份详细 HTTP 学习指南这里面对于请求报文以及响应报文的讲解很深刻详细.

三 两者之间的区别:

file协议用于访问本地计算机中的文件,好比通过资源管理器中打开文件一样,需要主要的是它是针对本地的,即file协议是访问你本机的文件资源。

file协议只能在本地访问,file协议无法实现跨域

http访问本地的html文件,相当于将本机作为了一台http服务器,然后通过localhost访问的是你自己电脑上的本地服务器,再通过http服务器去访问你本机的文件资源。

再简单点就是file只是简单请求了本地文件,将其作为一个服务器未解析的静态文件打开。而http是在本地搭建了一个服务器再通过服务器去动态解析拿到文件。

四 HTTP请求与AJAX请求

两者本质区别:
AJAX通xmlHttpRequest象请求服务器服务器接受请求返数据实现刷新交互
普通http请求通httpRequest象请求服务器接受请求返数据需要页面刷新

AJAX请求:
在这里插入图片描述

普通的HTTP请求:
在这里插入图片描述

AJAX请求头会多一个x-requested-with参数,值为XMLHttpRequest

String requestType = request.getHeader("X-Requested-With");  

以此为判断依据

五 文末补充 URL格式

完整的URL包含下面几个部分:

①协议:该URL的协议部分为“https”,标识网页使用的是https协议,在internet中可以使用多种协议(http,https,ftp等)

②域名:一个URL中也可以使用IP(119.75.217.109)作为域名,这个URL中域名为www.baidu.com

③端口:跟在域名后,以“ : ”(冒号)作为分隔符。如果省略端口,那么将采用默认端口。

④虚拟目录:虚拟目录不是必须部分。是从域名后第一个“/”开始到最后一个“/”为止。

⑤文件名:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。

⑥锚:从“#”开始到最后都是锚,锚也不是一个URL必须的部分。

⑦参数:从“?”开始到“#”为止中间为参数,参数可以允许有多个参数,中间以“&”作为分隔符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

file协议与Http协议,HTTP请求与AJAX请求 的相关文章

  • JS 库请求的常见 HTTP 标头是什么?

    使用JavaScript 框架原型 http www prototypejs org 我注意到 Ajax 请求通过一个名为X Requested With 其他 JavaScript 库 如 jQuery dojo 和 YUI 是否会向其
  • 使用 AJAX 和 Jquery 自动完成功能填充表单数据

    我想使用自动完成所选项目来填写表单数据 我的自动完成工作正常 但我无法弄清楚如何通过从自动完成文本框中检索项目来填写表单数据 这是我的代码 HttpPost public JsonResult GetAutocomplete string
  • AJAX 表单正在向自身提交?

    我不知道今晚发生了什么 但我似乎无法让 AJAX 工作 提交表单后 它会使用 URL 中的值刷新页面 我正在使用具有提交处理程序的验证插件 但它仍然会刷新 我以前用过这个方法 没有出现任何问题 看看这里的页面 让我知道您的想法 div cl
  • 以一定时间间隔连续重复运行 JavaScript 函数

    这是我的第一个问题 希望您尽快回答 我想要代码连续重复一个函数 我尝试了一些代码 但没有成功 我尝试了这段代码 我想在一段时间后重复这个功能 我努力了setInterval and setTimeout 但是 我还没有收到结果 这将重复该任
  • 当复选框条件更改时,如何使用ajax更新mysql数据库?

    我有一个在客户端按行显示的文章表 每篇文章都有一个唯一的 ID 并包含一个复选框以指示该文章是否被选中为收藏夹 如果它是最喜欢的 则该复选框已被选中 如果没有 则未选中 现在 如果特定于每一行的复选框条件发生变化 我需要 js 或 jque
  • PHP、jQuery 和 Ajax 调用乱序

    我正在使用 jQuery 进行 Ajax 调用 我有 x 数量的 Ajax 调用附加到 div 这些 Ajax 加载请求是由 PHP foreach 循环生成的 问题是它们渲染的顺序不正确 它们被设置在数组中
  • 如何通过减少请求来改进 AJAX 实时搜索

    我正在构建一个 AJAX 实时搜索页面 到目前为止 一切都按预期运行 但我注意到我正在进行大量的 AJAX 调用 我知道发生这种情况的地点和原因 但我找不到阻止这些 AJAX 调用发生的方法 我将尝试给出快速解释 然后粘贴下面的代码 在页面
  • Java Web 技术中的 AJAX 自动完成文本框(JSP 和 servlet)

    我需要您的帮助 了解如何使用 Java Web 技术 JSP Servlet 和 AJAX 使 HTML 输入文本元素像 Google 的 AJAX 搜索引擎 输入文本元素一样工作 下拉列表中的数据将来自数据库表 例如分别是 MySQL 或
  • 如何让Gmail像加载进度条一样

    我想在页面的中心和顶部创建一个像 Gmail 一样的加载进度条 并适用于所有浏览器 这是基本代码
  • 回到使用 ajax 的 PushState 条目

    我对以下情况有疑问 用户访问网站 用户点击使用history pushState的链接来更新url 通过ajax加载部分页面内容 使用jQuery 用户单击加载新页面的常规链接 用户点击返回返回到pushState条目 该页面现在仅显示通过
  • 发送 POST 请求时 JSON 原语无效

    我有以下 ajax 请求 其中我尝试将 JSON 对象发送到服务器 function sendData subscriptionJson ajax type POST url Url Action SubscribeSecurities S
  • jQuery / Ajax:如何循环遍历数组作为 Ajax 成功函数的一部分

    我有一个阿贾克斯调用返回一个数组并需要对该数组中的每个值执行某些操作 到目前为止 我有以下内容 但这会返回以下错误 Uncaught TypeError Cannot use in operator to search for length
  • 用javascript调用外部网页(跨域)

    我正在尝试使用以下网络服务来验证提要这个问题 https stackoverflow com questions 11996430 check if a url is a valid feed 但浏览器不允许我向另一台服务器发送 ajax
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • 优雅降级 - 何时考虑

    在为使用 AJAX 的应用程序设计和构建 UI 时 您何时考虑优雅降级 对于禁用 JavaScript 或正在使用屏幕阅读器的用户 最后 网站的 AJAX 版本完全完成后 在每个发展阶段 I don t 还有别的事 这些日子 渐进增强 ht
  • Yii2:对 ajax 提交的表单进行 ajax 表单验证

    我想知道是否有 Yii2 专家可以帮助我了解如何最好地结合使用 ajax 表单和 Yii ajax 验证 我想我可以解释这个问题 而无需向您介绍我的所有代码 我正在制作一个促销代码输入表单 用户在表单中输入促销代码 该表单通过 ajax 提
  • AJAX:检查字符串是否为 JSON?

    我的 JavaScript 有时会在这一行崩溃 var json eval this responseText 当争论时会导致崩溃eval 不是 JSON 在进行此调用之前有什么方法可以检查字符串是否为 JSON 我不想使用框架 有什么方法
  • 如何在网页上实现文件上传进度条?

    当用户将文件上传到我的网络应用程序时 我想显示比动画 gif 更有意义的内容 我还有哪些可能性 编辑 我正在使用 Net 但我不介意是否有人向我展示与平台无关的版本 如果您对这一切在客户端通常如何工作感兴趣 就是这样 所有解决方案都通过 J
  • 未捕获的类型错误:未定义不是函数

    我收到消息Uncaught TypeError Undefined is not a function当我尝试调用家庭控制器中的方法时 也许关于我为什么收到此消息的建议 findIdpActivities function pernr ca
  • 可以通过 url 发送 JSON 吗?

    我有一个 ruby 哈希 其中键是 url 值是整数 我将哈希值转换为 JSON 我想知道是否能够通过 AJAX 请求在 url 内发送 JSON 然后从 params 哈希值中提取该 JSON 另外 我将把 JSON 化的 ruby 哈希

随机推荐

  • Topic 6 SCI 文章之计数变量泊松回归

    这期继续说说统计这些事 泊松分布大家可能熟悉些 但是用它来做模型还是需要细细品味一下 泊松回归 也被称为对数线性模型 当结果变量是一个计数 即数值型 但不像连续变量的范围那么大 时 使用泊松回归 研究中统计变量的例子包括一个人有多少次心脏病
  • 程序员写100万行代码是什么感觉

    今天在社群上闲逛 突然发现一个十分有趣的帖子 写了100W行的代码是啥感觉 看完之后就头皮一阵发麻 让我写一万行的代码 are you kidding me 黑人问号脸 我估计写到20万的时候就会突然有个疑问 咦 我的头发呢 A同学 我写两
  • 期货开户市场是一面镜子

    期货市场是一面镜子 照出真实的你 成功者 总需要用失败者来定义 市场中1 的更新和迭代 使进入合理的市场循环状态 有人说期货市场是优秀人才的坟墓 究其根本原因 即使是其他领域的小有成就的精英 在期货市场中也很难完成超越 市场折射出人性的贪婪
  • 如何在matlab中打开一个.dat文件,并载入数据

    方法一 fscanf函数 fid fopen data dat r 打开数据文件 x fscanf fid g 读取文件数据 得到的x数据为列向量 要注意的是 data dat必须是在你操作的目录下 方法二 load函数 load xxx
  • RocketMQ知识

    1 为什么使用MQ MQ在项目中的作用 MQ具有解耦 异步 削峰填谷的功能 在本人项目中主要用于单向报文 交易信息登记的异步操作 2 RocketMQ由哪些角色组成 它们分别由什么作用 NameServer 作为服务协调组件 类似于zook
  • 做项目时候活动详情页面遇到的思考总结1。

    首先这个整体在活动详情这个页面显示 这个页面是这个项目得亮点也是难点 先是pageleft拖拽组件 获得组件数据component改变拖拽状态dragactive 然后在预览页面pagereview中添加到预览位置 先获得拖动鼠标距离预览区
  • 诚之和:怎么在Django中Pyecharts生成图表

    在数据可视化中 我们可以使用一些类似pyecharts来生成图表 但如果我们想在网页中进行数据可视化 还需要Django的支持 那么怎么在Django中Pyecharts生成图表呢 接下来的这篇文章带你了解 因为pyecharts是支持py
  • Flask(数据库操作 十一)

    查询 查询全部 users User query all 查询第一个 users User query first 通过主键获取 users User query get 1 多个主键 users User query get 1 5 us
  • windows下安装虚拟机+ Ubuntu的详细过程

    不是每一个程序员都必须玩过linux 只是博主觉得现在的很多服务器都是linux系统的 而自己属于那种前端也搞 后台也搞 对框架搭建也感兴趣 但是很多生产上的框架和工具都是安装在服务器上的 而且有不少大公司都要求熟悉在linux上开发 因此
  • Spring学习--DI依赖注入

    依赖与依赖注入 传统应用程序设计中所说的依赖一般指 类之间的关系 那先让我们复习一下类之间的关系 泛化 表示类与类之间的继承关系 接口与接口之间的继承关系 实现 表示类对接口的实现 依赖 当类与类之间有使用关系时就属于依赖关系 不同于关联关
  • osgEarth的Rex引擎原理分析(一二七)rex影像层属性及其设置

    目标 一二六 中问题213
  • C语言之进制转换

    文章目录 一 基础知识 1 C语言中的进制 2 汇编中的进制 3 常见进制的基数 4 不同进制的输出方式 二 十进制转为其它进制 三 任意进制转为十进制 四 二进制与十六进制的互相转换 1 二进制转为十六进制 2 十六进制转为二进制 五 二
  • SaltStack Installation(一)

    author skate time 2014 11 11 SaltStack Installation Installation from EREL 1 If EPEL is not enabled on your system you c
  • MFC窗体中打开第三方exe程序到指定区域

    流程如下 1 CreateProcess创建外部EXE进程 2 获取指定区域的坐标 3 查找进程的主窗口 4 将外部程序移到指定区域 5 调用ShowWindow显示窗口 主程序如下 handle StartProcess D progra
  • C# WINFORM嵌入CHROME浏览器(CEFSHARP)

    在开发过程中经常需要在程序中嵌入浏览器控件用于访问网页 Visual Studio中自带了一个webbrowser控件 但无奈这个控件是调用用户电脑上的IE浏览器来实现的 如果用户装的是低版本IE 比如Win7的IE8 很多新的网页标准就无
  • express中如何引入页面中的路径

    想用nodejs express bootstrap做一个rainbow的页面小程序 但是在写的过程中 发现在index ejs中引入的静态css和js都无法找到路径 而我使用的WebStorm是在页面中直接可以找到引用的路径的 在浏览器中
  • 北大邹磊:图数据库中的子图匹配算法

    导读 本次讲座从图数据库中的核心查询算子 子图匹配入题 介绍了图数据库的基本概念 子图匹配的算法 以及在图数据库环境下的子图匹配查询优化等内容 具体包括下面三个方面 什么是图数据库 子图匹配查询及其优化方法 我们的工作 01 什么是图数据库
  • SQL AND & OR 运算符

    博客主页 开心档博客主页 欢迎关注 点赞 收藏 留言 本文由开心档原创 51CTO首发时间 2022年12月12日 这世界很喧嚣 做自己就好 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢 本文介绍 AND OR 运算符用于基
  • Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

    今天碰到了一个查询异常问题 上网查了一下 感谢原创和译者 如果你使用的数据库连接类是 the Data Access Application Blocks SqlHelper 或者 SqlClient Class 你在执行一个很费时的SQL
  • file协议与Http协议,HTTP请求与AJAX请求

    一 什么是file协议 file协议主要用于访问本地计算机中的文件 好比通过Windows的资源管理器中打开文件或者通过右键单击 打开 一样 基本格式 file 文件路径 file C Users CLi AppData Local Tem