首页 > 其他分享 >《HTTP协议入门:简单易懂的6个步骤!》

《HTTP协议入门:简单易懂的6个步骤!》

时间:2024-09-24 11:21:57浏览次数:11  
标签:HTTP 入门 请求 Refresh 文档 服务器 易懂 页面

HTTP协议

HTTP 方法
HTTP 状态码
HTTP 头信息
HTTP 消息结构

HTTP请求格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP 请求方法

get 请求指定的页面信息,并返回实体主体。
post 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。

delete 请求服务器删除指定的页面。

put 从客户端向服务器传送的数据取代指定的文档的内容。
patch 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

head 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
trace 回显服务器收到的请求,主要用于测试或诊断。

connect HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
options 允许客户端查看服务器的性能。

HTTP状态码

分类
分类描述
1**
信息,服务器收到请求,需要请求者继续执行操作
2**
成功,操作被成功接收并处理
3**
重定向,需要进一步的操作以完成请求
4**
客户端错误,请求包含语法错误或无法完成请求
5**
服务器错误,服务器在处理请求的过程中发生了错误

HTTP状态码

200 OK 请求成功
204 No Content(无内容)

301 Moved Permanently(永久重定向)
302 Found(临时重定向)
303 See Othe(查看其他地址)
304 Not Modified(未修改)
305 Use Proxy(使用代理)

400 Bad Request (语法错误)
401 Unauthorized(未授权)请求要求用户的身份认证
403 Forbidden(禁止)
404 Not Found(未找到)请求的资源(网页等)不存在
405 Method Not Allowed (方法禁用)
406 Not Acceptable(不接受)
407
Proxy Authentication Required
请求者应当使用代理进行授权
408 Request Time-out(请求超时)

500Internal Server Error(服务器内部错误)
501 Not Implemented(尚未实施)
502 Bad Gateway(错误网关)
503 Service Unavailable(服务不可用)
504 Gateway Time-out(网关超时)
505 HTTP Version not supported(HTTP 版本不受支持)

HTTP 响应头信息

Content-Encoding
文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此,Servlet应该通过查看Accept-Encoding头(即request.getHeader(“Accept-Encoding“))检查浏览器是否支持gzip,为支持gzip的浏览器返回经gzip压缩的HTML页面,为其他浏览器返回普通页面。

Allow
服务器支持哪些请求方法(如GET、POST等)。

Content-Length
表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势,可以把输出文档写入 ByteArrayOutputStream,完成后查看其大小,然后把该值放入Content-Length头,最后通过byteArrayStream.writeTo(response.getOutputStream()发送内容。

Content-Type
表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentType。

Date
当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。

Last-Modified
文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可用setDateHeader方法来设置。

Expires
应该在什么时候认为文档已经过期,从而不再缓存它?

Location
表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。

Refresh
表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader(“Refresh“, “5; URL=http://host/path“)让浏览器读取指定的页面。
注意这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV=“Refresh“ CONTENT=“5;URL=http://host/path“>实现,这是因为,自动刷新或重定向对于那些不能使用CGI或Servlet的HTML编写者十分重要。但是,对于Servlet来说,直接设置Refresh头更加方便。

注意Refresh的意义是“N秒之后刷新本页面或访问指定页面“,而不是“每隔N秒刷新本页面或访问指定页面“。因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新,不管是使用Refresh头还是<META HTTP-EQUIV=“Refresh“ ...>。

注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。

Set-Cookie
设置和页面关联的Cookie。Servlet不应使用response.setHeader(“Set-Cookie“, ...),而是应使用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的讨论。

WWW-Authenticate
客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。例如,response.setHeader(“WWW-Authenticate“, “BASIC realm=\“executives\““)。
注意Servlet一般不进行这方面的处理,而是让Web服务器的专门机制来控制受密码保护页面的访问(例如.htaccess)。

Server
服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。

免费的API接口开放平台

标签:HTTP,入门,请求,Refresh,文档,服务器,易懂,页面
From: https://blog.csdn.net/2401_87111336/article/details/142485191

相关文章

  • 万象更新 Html5 - js: js 的跨域请求 XMLHttpRequest
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-js:js的跨域请求XMLHttpRequest示例如下:js\XMLHttpRequest.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>XMLHttpR......
  • 《大模型应用开发极简入门》学习成为善用 AI 的人!看完懂得90%的大模型!{含pdf版电子书}
    ......
  • git入门
    文章目录Git是什么?Git的相关理论基础日常开发中,Git的基本常用命令Git进阶之分支处理Git进阶之处理冲突Git进阶之撤销与回退Git进阶之标签tagGit其他一些经典命令Git是什么在回忆Git是什么的话,我们先来复习这几个概念哈~什么是版本控制?百度百科定义是酱紫......
  • node-http模块:服务器与客户端
    HTTP服务器与客户端Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的HTTP客户端。http.Server是一个基于事件的HTTP服务器,它的核心由Node.js下层C++部分实现,而接口由JavaScript封装,兼顾了高性能与简易性。http.request则是一个HTTP客户......
  • Spring 全家桶使用教程 —— 后端开发从入门到精通
    Spring全家桶是Java后端开发的利器,提供了从基础开发到复杂微服务架构的一整套解决方案。通过对各个Spring组件的掌握,开发者可以快速构建高效、稳定的企业级应用。本文将详细介绍Spring全家桶的各个组件,帮助开发者深入理解其核心功能,构建功能强大的应用。目录Spring全......
  • POST请求:掌握HTTP协议的强大功能
    在网络编程和API交互中,HTTP协议扮演着至关重要的角色。POST请求,作为HTTP协议中的一个核心方法,广泛应用于数据提交、用户登录、表单处理等场景。本文将详细介绍POST请求的基本概念、使用场景以及如何在不同编程语言中实现POST请求。什么是POST请求?POST(PostMethod)是一种HTTP方法,......
  • Python入门基础知识总结(赶紧收藏)
    一:简介:Python是一种解释型、面向对象的语言Python的语法和动态类型,以及解释性语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言二:Python基础语法2.1.字面量字面量:在代码中,被写下来的的固定的值,称之为字面量Python中有6种常用的值(数据)的类型**注意:type()**语......
  • 如何使用 Bittly 为基于 HTTP 的 API 快速创建 UI 操作界面
    在开发Web应用或服务时,通常会提供不同数量的API接口给客户端或其他第三方使用,当API数量达到一定数量的时候,在处理接口间的调用链以及参数关系时就会变得异常麻烦。在这种情况下便可通过Bittly的面板功能将这些API结构进行组装整理起来组成一个UI控制面板,从而......
  • Android面试:OkHttp 详解
    引言        在Android开发中,网络请求是不可或缺的一部分。OkHttp作为一款强大的HTTP客户端库,以其高效、易用和灵活的特点,成为了Android开发者的首选。本文将深入解析OkHttp的内部机制,包括其架构、基本使用、核心组件以及如何通过扩展来实现更丰富的功能。1......
  • Docker入门实践(三)
    环境VMwareWorkstationProubuntu-23.04常用命令拉去容器镜像dockerpullimage-name启动容器dockerrunCONTAINER-ID停止容器dockerstopCONTAINER-ID执行容器命令dockerexecnginxnginx-troot@ubuntufordocker:/etc/docker#dockerexec0f3554......