\`\`\`http 101: 转换协议(例如WebScoket连接成功后需要切换协议) 200: 服务端成功响应 301: 永久重定向 302: 临时重定向 401: 未授权(需要登录) 403: 请求被拒绝(权限不够) 404: 服务端找不到请求的资源 500: 处理请求时出错 503: 服务不可用 504: 网关超时 \`\`\` \| MIME 类型 \| 音频或视频类型 \| \| :--------------------------------------------------------- \| :----------------------------------------------------------- \| \| \`audio/wave\`、\`audio/wav\`、\`audio/x-wav\`、\`audio/x-pn-wav\` \| 采用 WAVE 容器的音频文件。一般支持 PCM 音频编码(WAVE codec "1"),其他解码器有限支持(如果有的话)。 \| \| \`audio/webm\` \| 采用 WebM 容器的音频文件。Vorbis 和 Opus 是 WebM 规范官方支持的最常用的解码器。 \| \| \`video/webm\` \| 采用 WebM 容器的音视频文件。VP8 和 VP9 是其最常用的视频解码器。Vorbis 和 Opus 是其最常用的音频解码器。 \| \| \`audio/ogg\` \| 采用 OGG 容器的音频文件。Vorbis 是这个多媒体文件格式最常用的音频解码器。现在,同样也支持 Opus。 \| \| \`video/ogg\` \| 采用 OGG 容器的音视频文件。常用的视频解码器是 Theora;常用的音频解码器为 Vorbis,不过 Opus 也变得越来越常用。 \| \| \`application/ogg\` \| 采用 OGG 容器的音视频文件。常用的视频解码器是 Theora;音频解码器为 Vorbis。 \| \| 方案 \| 描述 \| \| :---------- \| :----------------------------------------------------------- \| \| data \| \[Data URIs\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Data_URLs) \| \| file \| 指定主机上文件的名称 \| \| ftp \| \[文件传输协议\](https://developer.mozilla.org/zh-CN/docs/Glossary/FTP) \| \| http/https \| \[超文本传输 协议/安全的超文本传输协议\](https://developer.mozilla.org/zh-CN/docs/Glossary/HTTP) \| \| mailto \| 电子邮件地址 \| \| ssh \| 安全 shell \| \| tel \| 电话 \| \| urn \| 统一资源名称 \| \| view-source \| 资源的源代码 \| \| ws/wss \| (加密的)\[WebSocket (en-US)\](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) 连接 \| \| 请求方式 \| 描述 \| \| ------------------------------------------------------------ \| ------------------------------------------------------------ \| \| \[\`GET\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/GET) \| \`GET\` 方法请求一个指定资源的表示形式,使用 \`GET\` 的请求应该只被用于获取数据。 \| \| HEAD \| \`HEAD\` 方法请求一个与 \`GET\` 请求的响应相同的响应,但没有响应体。 \| \| \[\`POST\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/POST) \| \`POST\` 方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。 \| \| \[\`PUT\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/PUT) \| \`PUT\` 方法用有效载荷请求替换目标资源的所有当前表示。 \| \| \[\`DELETE\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/DELETE) \| \`DELETE\` 方法删除指定的资源。 \| \| \[\`CONNECT\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/CONNECT) \| \`CONNECT\` 方法建立一个到由目标资源标识的服务器的隧道。 \| \| \[\`OPTIONS\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/OPTIONS) \| \`OPTIONS\` 方法用于描述目标资源的通信选项。 \| \| \[\`TRACE\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/TRACE) \| \`TRACE\` 方法沿着到目标资源的路径执行一个消息环回测试。 \| \| \[\`PATCH\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/PATCH) \| \`PATCH\` 方法用于对资源应用部分修改。 \| ### \[multipart/form-data\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_Types#multipartform-data) \`multipart/form-data\` 可用于 \[HTML 表单\](https://developer.mozilla.org/zh-CN/docs/Learn/Forms)从浏览器发送信息给服务器。 作为多部分文档格式,它由边界线(一个由双横滑线 \`--\` 开始的字符串)划分出的不同部分组成。每一部分有自己的实体,以及自己的 HTTP 请求头,\[\`Content-Disposition\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition) 和 \[\`Content-Type\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type) 用于文件上传字段。 ### \[multipart/byteranges\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_Types#multipartbyteranges) \`multipart/byteranges\` 用于把部分的响应报文发送回浏览器。 当状态码 \[\`206 Partial Content\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/206) 被发出后,这个 MIME 类型用于指出这个文件由若干部分组成,每一个都有其请求范围。就像其他多部分类型一样,\[\`Content-Type\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type) 使用 \`boundary\` 来制定分界线。每一个不同的部分都有 \[\`Content-Type\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type) 这样的 HTTP 标头来说明文件的实际类型,以及 \[\`Content-Range\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Range) 来说明其范围。 下表列出了浏览器端信息头的一些重要内容,在以后的网络编程中将会经常见到这些信息: \| \*\*信息\*\* \| \*\*描述\*\* \| \| :------------------ \| ------------------------------------------------------------ \| \| Accept \| 指定浏览器或其他客户端可以处理的MIME类型。它的值通常为 \*\*image/png\*\* 或 \*\*image/jpeg\*\* \| \| Accept-Charset \| 指定浏览器要使用的字符集。比如 ISO-8859-1 \| \| Accept-Encoding \| 指定编码类型。它的值通常为 \*\*gzip\*\* 或\*\*compress\*\* \| \| Accept-Language \| 指定客户端首选语言,servlet会优先返回以当前语言构成的结果集,如果servlet支持这种语言的话。比如 en,en-us,ru等等 \| \| Authorization \| 在访问受密码保护的网页时识别不同的用户 \| \| Connection \| 表明客户端是否可以处理HTTP持久连接。持久连接允许客户端或浏览器在一个请求中获取多个文件。\*\*Keep-Alive\*\* 表示启用持久连接 \| \| Content-Length \| 仅适用于POST请求,表示 POST 数据的字节数 \| \| Cookie \| 返回先前发送给浏览器的cookies至服务器 \| \| Host \| 指出原始URL中的主机名和端口号 \| \| If-Modified-Since \| 表明只有当网页在指定的日期被修改后客户端才需要这个网页。 服务器发送304码给客户端,表示没有更新的资源 \| \| If-Unmodified-Since \| 与If-Modified-Since相反, 只有文档在指定日期后仍未被修改过,操作才会成功 \| \| Referer \| 标志着所引用页面的URL。比如,如果你在页面1,然后点了个链接至页面2,那么页面1的URL就会包含在浏览器请求页面2的信息头中 \| \| User-Agent \| 用来区分不同浏览器或客户端发送的请求,并对不同类型的浏览器返回不同的内容 \| 下表摘要出了HTTP1.1响应头中最有用的部分,在网络编程中您将会经常见到它们: \| \*\*响应头\*\* \| \*\*描述\*\* \| \| :------------------ \| ------------------------------------------------------------ \| \| Allow \| 指定服务器支持的request方法(GET,POST等等) \| \| Cache- Control \| 指定响应文档能够被安全缓存的情况。通常取值为 \*\*public\*\*\*\*,\*\*\*\*private\*\* 或\*\*no-cache\*\* 等等。 Public意味着文档可缓存,Private意味着文档只为单用户服务并且只能使用私有缓存。No-cache 意味着文档不被缓存。 \| \| Connection \| 命令浏览器是否要使用持久的HTTP连接。\*\*close\*\*\*\*值\*\* 命令浏览器不使用持久HTTP连接,而keep-alive 意味着使用持久化连接。 \| \| Content-Disposition \| 让浏览器要求用户将响应以给定的名称存储在磁盘中 \| \| Content-Encoding \| 指定传输时页面的编码规则 \| \| Content-Language \| 表述文档所使用的语言,比如en, en-us,,ru等等 \| \| Content-Length \| 表明响应的字节数。只有在浏览器使用持久化 (keep-alive) HTTP 连接时才有用 \| \| Content-Type \| 表明文档使用的MIME类型 \| \| Expires \| 指明啥时候过期并从缓存中移除 \| 下表列出了可能会从服务器返回的HTTP状态码和与之关联的消息: \| \*\*状态码\*\* \| \*\*消息\*\* \| \*\*描述\*\* \| \| ---------- \| ----------------------------- \| ------------------------------------------------------------ \| \| 100 \| Continue \| 只有一部分请求被服务器接收,但只要没被服务器拒绝,客户端就会延续这个请求 \| \| 101 \| Switching Protocols \| 服务器交换机协议 \| \| 200 \| OK \| 请求被确认 \| \| 201 \| Created \| 请求时完整的,新的资源被创建 \| \| 202 \| Accepted \| 请求被接受,但未处理完 \| \| 203 \| Non-authoritative Information \| \| \| 204 \| No Content \| \| \| 205 \| Reset Content \| \| \| 206 \| Partial Content \| \| \| 300 \| Multiple Choices \| 一个超链接表,用户可以选择一个超链接并访问,最大支持5个超链接 \| \| 301 \| Moved Permanently \| 被请求的页面已经移动到了新的URL下 \| \| 302 \| Found \| 被请求的页面暂时性地移动到了新的URL下 \| \| 303 \| See Other \| 被请求的页面可以在一个不同的URL下找到 \| \| 304 \| Not Modified \| \| \| 305 \| Use Proxy \| \| \| 306 \| \*Unused\* \| 已经不再使用此状态码,但状态码被保留 \| \| 307 \| Temporary Redirect \| 被请求的页面暂时性地移动到了新的URL下 \| \| 400 \| Bad Request \| 服务器无法识别请求 \| \| 401 \| Unauthorized \| 被请求的页面需要用户名和密码 \| \| 402 \| Payment Required \| \*目前还不能使用此状态码\* \| \| 403 \| Forbidden \| 禁止访问所请求的页面 \| \| 404 \| Not Found \| 服务器无法找到所请求的页面 \| \| 405 \| Method Not Allowed \| 请求中所指定的方法不被允许 \| \| 406 \| Not Acceptable \| 服务器只能创建一个客户端无法接受的响应 \| \| 407 \| Proxy Authentication Required \| 在请求被服务前必须认证一个代理服务器 \| \| 408 \| Request Timeout \| 请求时间超过了服务器所能等待的时间,连接被断开 \| \| 409 \| Conflict \| 请求有矛盾的地方 \| \| 410 \| Gone \| 被请求的页面不再可用 \| \| 411 \| Length Required \| "Content-Length"没有被定义,服务器拒绝接受请求 \| \| 412 \| Precondition Failed \| 请求的前提条件被服务器评估为false \| \| 413 \| Request Entity Too Large \| 因为请求的实体太大,服务器拒绝接受请求 \| \| 414 \| Request-url Too Long \| 服务器拒绝接受请求,因为URL太长。多出现在把"POST"请求转换为"GET"请求时所附带的大量查询信息 \| \| 415 \| Unsupported Media Type \| 服务器拒绝接受请求,因为媒体类型不被支持 \| \| 417 \| Expectation Failed \| \| \| 500 \| Internal Server Error \| 请求不完整,服务器遇见了出乎意料的状况 \| \| 501 \| Not Implemented \| 请求不完整,服务器不提供所需要的功能 \| \| 502 \| Bad Gateway \| 请求不完整,服务器从上游服务器接受了一个无效的响应 \| \| 503 \| Service Unavailable \| 请求不完整,服务器暂时重启或关闭 \| \| 504 \| Gateway Timeout \| 网关超时 \| \| 505 \| HTTP Version Not Supported \| 服务器不支持所指定的HTTP版本 \| 1. \*\[\`100 Continue\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/100)\* HTTP \*\*\`100 Continue\`\*\* 信息型状态响应码表示目前为止一切正常,客户端应该继续请求,如果已完成请求则忽略。 为了让服务器检查请求的首部,客户端必须在发送请求实体前,在初始化请求中发送 \`Expect: 100-continue\` 首部并接收 \`100 Continue\` 响应状态码。 2. \[\`101 Switching Protocols\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/101) HTTP \*\*\`101 Switching Protocol\`\*\*(协议切换)状态码表示服务器应客户端升级协议的请求(\[\`Upgrade\` (en-US)\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Upgrade)请求头)正在切换协议。 服务器会发送一个\[\`Upgrade\` (en-US)\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Upgrade)响应头来表明其正在切换过去的协议。 该过程在协议升级机制(\[Protocol upgrade mechanism\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Protocol_upgrade_mechanism))中详细描述。 3. \[\`102 Processing\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/102) HTTP \*\*\`102 处理\`\*\*信息状态响应代码向客户端指示已收到完整请求,并且服务器正在处理该请求。 仅当服务器预计请求需要大量时间时,才会发送此状态代码。它告诉客户端您的请求尚未失效。 \*\*注意:\*\*此状态代码已弃用,不应再发送。客户可能仍然接受它,但只是忽略它们。 4. \[\`103 Early Hints\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/103)实验性 5. \[\`200 OK\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/200) HTTP \*\*\`200 OK\`\*\* 成功状态响应代码指示请求已成功。默认情况下,200 响应是可缓存的。 成功的含义取决于 HTTP 请求方法: - \[\`GET\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET):资源已被提取并在消息正文中传输。 - \[\`HEAD:\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD)表示标头包含在响应中,没有任何消息正文 - \[\`POST:\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)描述操作结果的资源在消息正文中传输 - \[\`跟踪\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE):消息正文包含服务器接收的请求消息。 \[\`PUT\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT) 或 \[\`DELETE\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE) 的成功结果通常不是 204,而是 201(或首次上传资源时的 \[\`\<\>\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204))。\[\`\`\] 6. \[\`201 Created\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/201) HTTP \*\*\`201 创建\`\*\*成功状态响应代码指示请求具有 成功并导致了资源的创建。新资源或说明 并链接到新资源,在发送回响应之前有效地创建 并且新创建的项目将在消息正文中返回,位于 请求的 URL,或\[\`位置\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)标头值中的 URL。 7. \[\`202 Accepted\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/202) 响应状态码 \*\*202 Accepted\*\* 表示服务器端已经收到请求消息,但是尚未进行处理。但是对于请求的处理却是无保证的,即稍后无法通过 HTTP 协议给客户端发送一个异步请求来告知其请求的处理结果。这个状态码被设计用来将请求交由另外一个进程或者服务器来进行处理,或者是对请求进行批处理的情形。 8. \[\`203 Non-Authoritative Information\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/203) 在 HTTP 协议中,响应状态码 \*\*\`203 Non-authoritative Information\`\*\* 表示请求已经成功被响应,但是获得的负载与源头服务器的状态码为 \[\`200\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/200) () 的响应相比,经过了拥有转换功能的 \[proxy\](https://developer.mozilla.org/zh-CN/docs/Glossary/Proxy_server)(代理服务器)的修改。\`OK\` The 状态码有点类似于 \[\`Warning\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Warning) 首部的 \[\`214\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Warning#warning_codes)(Transformation Applied)警告码,后者的优势在于可以应用于任何状态码的响应之中。\`203\` 9. \[\`204 No Content\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/204) HTTP \*\*\`204 No Content\`\*\* 成功状态响应码,表示该请求已经成功了,但是客户端客户不需要离开当前页面。默认情况下 204 响应是可缓存的。一个 \[\`ETag\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/ETag) 标头包含在此类响应中。 使用惯例是,在 \[\`PUT\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Methods/PUT) 请求中进行资源更新,但是不需要改变当前展示给用户的页面,那么返回 204 No Content。如果创建了资源,则返回 \[\`201\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/201) 。如果应将页面更改为新更新的页面,则应改用 \[\`200\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/200) 。\`Created\` 10. \[\`205 Reset Content\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/205) 在 HTTP 协议中,响应状态码 \*\*\`205 Reset Content\`\*\* 用来通知客户端重置文档视图,比如清空表单内容、重置 canvas 状态或者刷新用户界面。 11. \[\`206 Partial Content\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/206) HTTP \*\*\`206 Partial Content\`\*\* 成功状态响应代码表示请求已成功,并且主体包含所请求的数据区间,该数据区间是在请求的 \[\`Range\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Range) 首部指定的。 12. \[\`207 Multi-Status\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/207) HTTP \*\*\`207 多状态\`\*\*响应代码指示可能存在混合响应。 响应正文是具有根元素的 HTTP 实体。XML 正文将列出所有单独的响应代码 13. \[\`208 Already Reported\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/208) 14. \[\`226 IM Used\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/226) 15. \[\`300 Multiple Choices\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/300) HTTP \*\*\`300 多项选择\`\*\*重定向状态响应代码指示请求具有多个可能的响应。 用户代理或用户应选择其中之一。 由于没有选择其中一个响应的标准化方法,因此很少使用此响应代码。 如果服务器有首选选项,则应生成\[\`位置\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)标头。 16. \[\`301 Moved Permanently\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/301) 超文本传输协议 (HTTP) \*\*\`301 永久移动重定向\`\*\*状态响应代码指示请求的资源已最终移动到\[\`位置\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)标头提供的 URL。浏览器重定向到新的 URL,搜索引擎更新其指向资源的链接。 \*\*注意:\*\*尽管\[规范\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301#specifications)要求在执行重定向时方法和正文保持不变,但并非所有用户代理都满足此要求。仅将代码用作 \[\`GET\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET) 或 \[\`HEAD\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD) 方法的响应,并改用 \[\`POST\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) 方法的 \[\`308 永久重定向\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/308),因为此状态明确禁止方法更改。\`301\` 17. \[\`302 Found\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/302) 18. \[\`303 See Other\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/303) 超文本传输协议 (HTTP) \*\*\`303 请参阅其他\`\*\*重定向状态响应代码指示重定向不会链接到请求的资源本身,而是链接到另一个页面(例如确认页面、实际对象的表示形式 - 请参阅 \[HTTP 范围 14\](https://en.wikipedia.org/wiki/HTTPRange-14) - 或上传进度页面)。此响应代码通常作为 \[\`PUT\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT) 或 \[\`POST\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) 的结果发回。用于显示此内容的方法 重定向的页面始终为 \[\`GET\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET)。 19. \[\`304 Not Modified\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/304) 20. \[\`307 Temporary Redirect\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/307) \[HTTP\](https://developer.mozilla.org/en-US/docs/Glossary/HTTP) \*\*\`307 临时重定向重定向\`\*\* 状态响应代码指示请求的资源已临时移动到 \[\`位置\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)标头提供的 URL。 21. \[\`308 Permanent Redirect\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/308) 超文本传输协议 (HTTP) \*\*\`308 永久重定向\`\*\*重定向状态响应代码 表示请求的资源已最终移动到 URL 给出的 URL \[\`位置\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location)标题。浏览器重定向到此页面并搜索 引擎更新它们与资源的链接(在"SEO-speak"中,据说 "链接汁"被发送到新的网址)。 请求方法和正文不会改变,而 \[\`301\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301) 可能会 有时错误地更改为\[\`GET\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET)方法。 22. \[\`400 Bad Request\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/400) 超文本传输协议 (HTTP) \*\*\`400\`\*\* 错误请求响应状态代码指示服务器由于被视为客户端错误(例如,格式不正确的请求语法、无效的请求消息框架或欺骗性请求路由)而无法或不会处理请求。 23. \[\`401 Unauthorized\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/401) 超文本传输协议 (HTTP) \*\*\`401 未经授权的\`\*\*响应状态代码指示客户端请求尚未 已完成,因为它缺少所请求资源的有效身份验证凭据。 此状态代码与包含以下内容的 HTTP \[\`WWW 身份验证\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/WWW-Authenticate)响应标头一起发送 有关客户端在提示用户输入身份验证凭据后如何再次请求资源的信息。 此状态代码类似于 \[\`403 禁止状态\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403)代码,不同之处在于在导致此状态代码的情况下 状态代码,则用户身份验证可以允许访问资源。 24. \[\`402 Payment Required\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/402) \*\*\`HTTP 402 需要付款\`\*\*是保留供将来使用的非标准响应状态代码。创建此状态代码是为了启用数字现金或(微型)支付系统,并指示在客户端付款之前请求的内容不可用。 有时,此状态代码表示在客户端付款之前无法处理请求。但是,不存在标准使用约定,不同的实体在不同的上下文中使用它。 25. \[\`403 Forbidden\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/403) HTTP \*\*\`403 禁止响应\`\*\*状态代码指示服务器理解请求,但拒绝授权。 此状态类似于 401,但对于 \*\*\`403 禁止状态\`\*\*代码,重新进行身份验证没有区别。\[\`\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401)访问与应用程序逻辑相关联,例如对资源的权限不足。 26. \[\`404 Not Found\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/404) HTTP \*\*\`404 未找到\`\*\*响应状态代码指示服务器找不到请求的资源。 指向 404 页面的链接通常称为断开或死链接,并且可能会受到\[链接腐烂\](https://en.wikipedia.org/wiki/Link_rot)的影响。 404 状态代码仅指示资源缺失:而不是暂时缺失还是永久缺失。 如果资源被永久删除,请改用 \[\`410\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410)(已消失)状态。 27. \[\`405 Method Not Allowed\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/405) 超文本传输协议 (HTTP) \*\*\`405 方法不允许\`\*\*响应状态代码指示服务器知道请求方法,但目标资源不支持此方法。 服务器\*\*必须在\*\* 405 状态代码响应中生成\*\*\`允许\`\*\*标头字段。该字段必须包含目标资源当前支持的方法列表。 28. \[\`406 Not Acceptable\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/406) 超文本传输协议 (HTTP) \*\*\`406 不接受\`\*\*客户端错误响应代码指示服务器无法生成响应匹配 请求的主动\[内容协商\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation)标头中定义的可接受值列表,以及 服务器不愿意提供默认表示形式。 主动内容协商标头包括: - \[\`Accept\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept) - \[\`Accept-Encoding\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding) - \[\`Accept-Language\`\](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language) 实际上,此错误很少使用。而不是使用此错误进行响应 代码,对于最终用户来说将是神秘的并且难以修复,服务器忽略 相关标题并向用户提供实际页面。假设即使 用户不会完全满意,他们更喜欢这个而不是错误代码。 如果服务器返回此类错误状态,则消息正文应包含 资源的可用表示形式列表,允许用户选择 其中 29. \[\`407 Proxy Authentication Required\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/407) 30. \[\`408 Request Timeout\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/408) 31. \[\`409 Conflict\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/409) 32. \[\`410 Gone\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/410) 33. \[\`411 Length Required\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/411) 34. \[\`412 Precondition Failed\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/412) 35. \[\`413 Content Too Large\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/413) 36. \[\`414 URI Too Long\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/414) 37. \[\`415 Unsupported Media Type\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/415) 38. \[\`416 Range Not Satisfiable\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/416) 39. \[\`417 Expectation Failed\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/417) 40. \[\`418 I'm a teapot\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/418) 41. \[\`421 Misdirected Request\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/421) 42. \[\`422 Unprocessable Content\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/422) 43. \[\`423 Locked\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/423) 44. \[\`424 Failed Dependency\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/424) 45. \[\`425 Too Early\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/425) 46. \[\`426 Upgrade Required\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/426) 47. \[\`428 Precondition Required\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/428) 48. \[\`429 Too Many Requests\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/429) 49. \[\`431 Request Header Fields Too Large\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/431) 50. \[\`451 Unavailable For Legal Reasons\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/451) 51. \[\`500 Internal Server Error\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/500) 52. \[\`501 Not Implemented\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/501) 53. \[\`502 Bad Gateway\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/502) 54. \[\`503 Service Unavailable\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/503) 55. \[\`504 Gateway Timeout\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/504) 56. \[\`505 HTTP Version Not Supported\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/505) 57. \[\`506 Variant Also Negotiates\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/506) 58. \[\`507 Insufficient Storage\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/507) 59. \[\`508 Loop Detected\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/508) 60. \[\`510 Not Extended\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/510) 61. \[\`511 Network Authentication Required\`\](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/511) \`\`\`java import mysql.connector # 连接数据库 cnx = mysql.connector.connect(user='root', password='password', host='127.0.0.1', database='article_db') cursor = cnx.cursor() # 获取总记录数 query = "SELECT COUNT(\*) FROM articles" cursor.execute(query) total_count = cursor.fetchone()\[0\] # 设置分页参数 page_size = 10 page_num = 1 # 计算总页数 total_pages = total_count // page_size if total_count % page_size != 0: total_pages += 1 # 获取当前页数据 offset = (page_num - 1) \* page_size query = "SELECT id, title, content, userid FROM articles LIMIT %s OFFSET %s" cursor.execute(query, (page_size, offset)) current_page_data = cursor.fetchall() # 页面切换逻辑 while True: # 显示当前页数据 display_page(current_page_data) # 获取用户输入的页码 page_num = input("请输入要跳转的页码(1-%d):" % total_pages) page_num = int(page_num) if page_num \< 1 or page_num \> total_pages: print("页码越界,请重新输入") continue # 计算偏移量 offset = (page_num - 1) \* page_size # 获取新一页数据 cursor.execute(query, (page_size, offset)) current_page_data = cursor.fetchall() # 关闭连接 cnx.close() \`\`\`
原创
http
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法