【 HTTP 响应 (Response) 】

一、请求行属性

1.1 状态码及状态码描述

状态码表示访问一个页面的结果. (是访问成功, 还是失败, 还是其他的一些情况…)

以下为常见的状态码:

200 OK
这是一个最常见的状态码, 表示访问成功

在这里插入图片描述

注意: 在抓包观察响应数据的时候, 可能会看到压缩之后的数据, 形如:

在这里插入图片描述

网络传输中 “带宽” 是一个稀缺资源, 为了传输效率更高往往会对数据进行压缩

点击 Fiddler 中的在这里插入图片描述

即可进行解压缩, 看到原始的内容


404 Not Found
没有找到资源.浏览器输入一个 URL, 目的就是为了访问对方服务器上的一个资源. 如果这个 URL 标识的资源不存在, 那么就会出现 404

在这里插入图片描述

403 Forbidden
表示访问被拒绝. 有的页面通常需要用户具有一定的权限才能访问(登陆后才能访问). 如果用户没有登陆直接访问, 就容易见到 403.

405 Method Not Allowed
前面我们已经学习了 HTTP 中所支持的方法, 有 GET, POST, PUT, DELETE 等.但是对方的服务器不一定都支持所有的方法(或者不允许用户使用一些其他的方法)

500 Internal Server Error
服务器出现内部错误. 一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)会产生这个状态码.咱们平时常用的网站很少会出现 500 (但是偶尔也能看到)

504 Gateway Timeout
当服务器负载比较大的时候, 服务器处理单条请求的时候消耗的时间就会很长, 就可能会导致出现超时的情况.这种情况在双十一等 “秒杀” 场景中容易出现, 平时不太容易见到

302 Move temporarily
临时重定向

理解 “重定向”
就相当于手机号码中的 “呼叫转移” 功能.
比如我本来的手机号是 186-1234-5678, 后来换了个新号码 135-1234-5678, 那么不需要让我的朋
友知道新号码,
只要我去办理一个呼叫转移业务, 其他人拨打 186-1234-5678 , 就会自动转移到 135-1234-5678

在登陆页面中经常会见到 302. 用于实现登陆成功后自动跳转到主页.

响应报文的 header 部分会包含一个 Location 字段, 表示要跳转到哪个页面

301 Moved Permanently
永久重定向. 当浏览器收到这种响应时, 后续的请求都会被自动改成新的地址.301 也是通过 Location 字段来表示要重定向到的新地址

总结:

上面使我们经常遇见的状态码,但是状态码涉及很多,如下:
在这里插入图片描述

这么多状态码我们不需要全记住,只需要清楚每一个大类,如下:

在这里插入图片描述

二、认识响应 “报头” (header)

响应报头的基本格式和请求报头的格式基本一致. 细节请参考请求报头!!

类似于 Content-Type , Content-Length 等属性的含义也和请求中的含义一致,也存在在一些细微差别:

Content-Type

响应中的 Content-Type 常见取值有以下几种:

  1. text/html : body 数据格式是 HTML
  2. text/css : body 数据格式是 CSS
  3. application/javascript : body 数据格式是 JavaScript
  4. application/json : body 数据格式是 JSON

在这里插入图片描述

三、认识响应 “正文” (body)

正文的具体格式取决于 Content-Type. 观察上面几个抓包结果中的响应部分

1) text/html
在这里插入图片描述

2) text/css
在这里插入图片描述

3) application/javascript
在这里插入图片描述

4) application/json

{“msg”:“操作成功”,“code”:200,“permissions”:[] }


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 ASP.NET Web API 来创建一个 Web 服务,读取文件内容并将其作为文件下载响应返回给客户端。 以下是一个简单的示例代码: ```csharp using System; using System.IO; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Web.Http; public class FileController : ApiController { [HttpGet] public HttpResponseMessage DownloadFile(string filePath) { try { // 读取文件内容 byte[] fileBytes = File.ReadAllBytes(filePath); // 创建 HTTP 响应 var response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new ByteArrayContent(fileBytes); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = Path.GetFileName(filePath); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); return response; } catch (Exception e) { // 创建 HTTP 错误响应 var response = new HttpResponseMessage(HttpStatusCode.InternalServerError); response.Content = new StringContent("读取文件失败:" + e.Message); return response; } } } ``` 你需要在 Web 服务中注册该控制器,并启动 Web 服务。然后,你可以通过发送 GET 请求到 `/api/file?filePath=C:\example.txt` 来下载文件。如果文件读取成功,将返回 HTTP 200 OK 响应,并包含文件内容。如果文件读取失败,将返回 HTTP 500 Internal Server Error 响应,并包含错误消息。另外,该代码还会设置响应头,以便浏览器能够正确地将文件下载到本地。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值