当前位置: 首页 > news >正文

【HTTP】构造HTTP请求和状态码

状态码

用于响应中,表示响应的结果如何

  • 正确?
  • 错误?什么原因?

HTTP 中的状态码都是标准约定好的 image.png|421

200 OK

成功了,一切顺利

  • 在抓包到的响应中 image.png

404 Not Found

访问的资源URL 中的路径)没找到 image.png|426

403 Forbidden

请求的资源没有权限访问

  • 例如:查看码云的私有仓库,如果不登陆,就会出现 403 image.png

学习状态妈的意义,就是为了能够更好的调试问题。咱们在自己写服务器的时候,最好能够按照人家状态码的含义来正确使用

405 Method Not Allowed

你的服务器只支持 GET 请求,但是你发了个 POST(后续学到 Spring 的时候,尤其是对于初学者来说,是很容易遇到这类问题的)

500 Internal Server Error

服务器内部错误(服务器挂了),在外面的网站是很难遇到的,咱们自己写的服务器就很容易遇到的

  • 有些服务器确实挂了,访问的时候也是可能会出现 500 的(概率不高,也是有可能会遇到的)

504 Gateway Timeout

访问服务器超时

  • 可能是服务器挂了
  • 也可能是网挂了

302 Move temporarily

重定向(临时重定向

明明是访问的网站 A,A 告诉你说去找 B,浏览器就会自动取访问 B

在陈奕迅的《爱情转移》中,有一句歌词“把一个人的温暖,转移到另一个的胸膛”

有一个域名:aaa.vip.com,用了一段时间之后,要改名字了。重新申请域名:bbb.vip.vom。修改域名之后,很多的老用户仍然会尝试使用旧的域名进行访问。为了不让老用户的使用不受到影响,就可以把访问老域名的请求重定向到新域名上

  • 类似于手机的“呼叫转移

301 Move Permanently

  • 301,永久重定向
  • 302,临时重定向
    会影响浏览器的缓存。如果是永久重定向,浏览器就会把重定向的结果记录下来,后续再进行访问,就直接访问重定向的目标地址即可,不必多一次跳转了;如果是临时重定向,就不太方便

Location

在这种重定向报文的响应中,会有一个特殊的 header 叫做 Location。其描述了要重定向到的目标的地址在哪

  • 描述了重定向是要跳转到哪里image.png|389

状态码小结

image.png|640
image.png|424

如何构造出 HTTP 请求

通过第三方工具构造

构造 HTTP 请求的第三方工具:PostMan,经典的,广泛使用的工具

  • 每个标签页,就是一个构造 HTTP 请求的配置页面 image.png

postman 还有一个很厉害的一点,它是个有对象的软件—— postwoman

通过代码构造

任何一种编程语言,只要能够操作网络,都可以构造 HTTP 请求

对于 Java 来说,需要使用 ServerSocket/SocketTCPSocket API 来编程),本质上就是基于 Socket 写一个 TCP 的客户端,然后往 Socket 中按照 HTTP 协议的格式写入字符串即可

实际开发中,都是有一些第三方库,封装好了上述操作,不需要手动写 SocketOkHttpClient(比较知名的 JavaHTTP 客户端库)。

如果后续确实要用到 OkHttpClient,代码不知道怎么写,可以使用 postman 里面的生成代码的功能

  • postman 中把要构造的请求配置好,postman 就能自动生成出对应的代码来

日常开发中,还会涉及到网页中构造 HTTP 请求(特别常见的情况),需要通过 HTML/JS 来构造出 HTTP 请求。比较经典的方式有:

  1. form 表单
  2. ajax

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 大数据新视界 --大数据大厂之AI 与大数据的融合:开创智能未来的新篇章
  • C++——模板初阶
  • 后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)
  • 十五、差分输入运算放大电路
  • 前端web端项目运行的时候没有ip访问地址
  • 【秋招笔试-支持在线评测】8.28华为秋招(已改编)-三语言题解
  • 20240921在友善之臂的NanoPC-T6开发板上确认宸芯的数传模块CX6602N的AT命令
  • etcd 集群搭建与测试指南
  • Linux入门学习:Linux调试器gdb使用
  • vue中 <template> 与 <template lang=“jade“>的对比,哪个性能好
  • 相机光学(三十八)——VCM(Voice Coil Motor)音圈马达
  • T4—猴痘识别
  • 计算总体方差statistics.pvariance()
  • 前端面试记录
  • 5. 数字证书与公钥基础设施
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 230. Kth Smallest Element in a BST
  • avalon2.2的VM生成过程
  • mongodb--安装和初步使用教程
  • Node项目之评分系统(二)- 数据库设计
  • Rancher-k8s加速安装文档
  • react-native 安卓真机环境搭建
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从0实现一个tiny react(三)生命周期
  • 规范化安全开发 KOA 手脚架
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (ros//EnvironmentVariables)ros环境变量
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (七)Java对象在Hibernate持久化层的状态
  • (学习日记)2024.02.29:UCOSIII第二节
  • (学习总结16)C++模版2
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转载)Google Chrome调试JS
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET/C# 使用反射注册事件
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET文档生成工具ADB使用图文教程
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [ C++ ] STL_list 使用及其模拟实现
  • [1525]字符统计2 (哈希)SDUT
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [Algorithm][综合训练][拜访][买卖股票的最好时机(四)]详细讲解
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk --不会编程的崽
  • [ComfyUI]Flux+MiniCPM-V强强联手艺术创意,媲美GPT4V级国产多模态视觉大模型