1. 有哪些常用的网页状态码

状态码

类别

含义说明

200

成功

请求成功。

201

成功

请求已成功,并因此创建了一个新的资源。

204

成功

服务器成功处理了请求,但没有返回任何内容。

301

重定向

请求的资源已被永久移动到新位置。

302

重定向

请求的资源临时从不同的 URI 响应请求。

304

重定向

自从上次请求后,请求的网页未修改过。服务器不会返回网页内容。

400

客户端错误

客户端发送的请求有误,服务器无法处理。

401

客户端错误

请求需要用户的身份认证。

403

客户端错误

服务器理解请求客户端的请求,但是拒绝执行此请求。

404

客户端错误

服务器找不到请求的资源。

500

服务器错误

服务器遇到意外情况,无法完成请求。

502

服务器错误

作为网关或代理的服务器从上游服务器收到了无效的响应。

503

服务器错误

服务器暂时无法处理请求,通常是因为过载或维护。

504

服务器错误

作为网关或代理的服务器未能及时从上游服务器收到响应。


2. 2xx、3xx、4xx、5xx的主要区别是什么

类别

含义

主要责任方

典型场景

2xx

请求成功

服务器

数据正常返回

3xx

需要客户端进一步操作(重定向)

服务器

页面被移动,需跳转到新地址

4xx

客户端请求出错

客户端

请求格式错误、权限不足、资源不存在

5xx

服务器内部错误

服务器

服务器异常、服务不可用、网关问题


3. 使用request库调用https://httpbin.org/get接口

import requests

# 发送 GET 请求
response = requests.get('https://httpbin.org/get')

# 输出响应状态码
print("状态码:", response.status_code)

# 输出响应内容
print("响应内容:", response.text)


4. 以get方式访问的接口是否可以直接使用浏览器访问

不如说浏览器默认发送的就是get方式


5. 使用request库调用https://httpbin.org/post接口,并提交表单

{'username': 'test', 'password': '123456'}

import requests

# 定义要提交的表单数据
data = {
    'username': 'test',
    'password': '123456'
}

# 发送 POST 请求,并提交表单数据
response = requests.post('https://httpbin.org/post', data=data)

# 输出响应状态码
print("状态码:", response.status_code)

# 输出响应内容(通常是 JSON 格式)
print("响应内容:", response.text)


6. 什么是表单

内容

描述

表单作用

收集用户输入的信息

常见字段

文本框、密码框、单选按钮、复选框、下拉框等

提交方式

GET(通过 URL 查询参数传递)、POST(通过请求体传递)

服务器处理

表单数据提交后,服务器根据业务逻辑进行验证、存储或其他操作


7. post提交数据时除了提交表单外还可以提交什么内容,最常用的是哪个

提交类型

内容类型

用途说明

表单数据

application/x-www-form-urlencoded

传统网页表单

JSON 数据

application/json

RESTful API、前后端通信

文件上传

multipart/form-data

图片、附件上传

原始数据(XML/文本)

自定义类型

特定系统间通信、遗留系统支持


8. post可以同时提交表单和json吗

HTTP 协议本身不允许在 一个请求头中同时使用表单和json,因为这两个是不同的内容类型,代表了不同的数据格式。服务器通常只会解析其中一种格式,忽略另一种。


9. 表单提交的内容跟json有什么区别呢,为什么不全部使用json

对比项

表单数据(application/x-www-form-urlencoded)

JSON 数据(application/json)

格式

键值对形式,如 username=test&password=123456

结构化数据,如 { "username": "test", "password": "123456" }

可读性

简单直观,但不适合复杂结构

易于阅读和理解,适合嵌套、数组等复杂结构

编码方式

通常使用 URL 编码(如空格会被转为 %20

默认支持 Unicode,中文无需额外处理

适用场景

HTML 表单提交、传统 Web 页面

RESTful API、前后端分离架构

解析难度

解析简单,适合浏览器直接发送

需要手动解析或使用库处理

兼容性

广泛支持,尤其适用于旧系统

现代系统广泛支持,但部分老系统可能不兼容

性能

数据体积较大,传输效率较低

数据体积较小,传输效


10. 使用request库调用https://httpbin.org/post接口,提交一个json内容

import requests
import json

payload = {
    "username": "test",
    "password": "123456"
}

# 手动序列化并指定 Content-Type
headers = {'Content-Type': 'application/json'}
response = requests.post('https://httpbin.org/post', data=json.dumps(payload), headers=headers)

print("状态码:", response.status_code)
print("响应内容:", response.text)


11. 什么是request,什么是response

一、什么是 request

request(请求)是客户端向服务器发起的一次数据交互,用于获取或提交数据。在 HTTP 协议中,客户端(如浏览器、Python 脚本等)通过发送一个请求来告诉服务器它想要什么资源或执行什么操作。

请求的组成:

  1. 请求方法(Method):如 GETPOSTPUTDELETE 等。

  2. URL(统一资源定位符):即请求的目标地址,例如:https://httpbin.org/post

  3. 请求头(Headers):包含元信息,如内容类型、用户代理、认证信息等。

  4. 请求体(Body):仅在某些方法(如 POSTPUT)中有,用于传递数据(如表单数据、JSON 数据)。


二、什么是 response?

response(响应)是服务器对客户端请求的回应。当服务器收到请求后,会根据请求的内容返回相应的结果,这个结果就是响应。

响应的组成:

  1. 状态码(Status Code):表示请求的结果状态,如 200 表示成功,404 表示资源未找到。

  2. 响应头(Headers):包含服务器信息、内容类型、编码方式等。

  3. 响应体(Body):实际返回的数据,可以是 HTML、JSON、XML、图片等格式。


12. 什么是请求头,有什么作用

请求头是 HTTP 请求的一部分,位于请求行(包含方法、URL 和 HTTP 版本)之后,用于向服务器传递客户端的附加信息。它由多个键值对组成,每行一个键值对。


13. 什么是Cookie、什么是Session、什么是Token

特性

Cookie

Session

Token (如 JWT)

存储位置

浏览器端

服务端

客户端或服务端(一般在客户端)

是否安全

不安全(可能被窃取)

安全(只存 ID 在客户端)

安全(签名防止篡改)

是否有状态

无状态

有状态(服务端维护会话)

无状态

适用场景

简单状态保持、跟踪用户行为

传统 Web 应用(如 Java、PHP)

前后端分离、移动端、微服务

扩展性

差(需共享 Session 存储)

强(支持跨域、分布式)

性能影响

大(需服务端维护 Session)

小(客户端存储,服务端无状态)


14. 上述三者有什么不同,分别在什么场景下使用

场景

推荐方式

说明

传统 Web 页面登录

Session + Cookie

登录后服务器保存状态,浏览器通过 Cookie 维持登录

前后端分离项目

Token(如 JWT)

前端本地存储 Token,每次请求带上 Authorization 头

移动 App 访问 API

Token

使用 Token 更容易实现跨平台、跨域访问

单点登录(SSO)

Token

Token 支持多个系统共享认证信息

用户行为统计

Cookie

用于识别用户,记录浏览行为等

以他人的幸福为幸福,以他人的享乐为享乐。