以下是响应头的大部分属性
响应头信息 | 中文翻译 | 描述 |
---|---|---|
Date | 日期 | 响应生成的日期和时间。例如:Wed, 18 Apr 2024 12:00:00 GMT |
Server | 服务器 | 服务器软件的名称和版本。例如:Apache/2.4.1 (Unix) |
Content-Type | 内容类型 | 响应体的媒体类型(MIME类型),如text/html; charset=UTF-8, application/json等。 |
Content-Length | 内容长度 | 响应体的大小,单位是字节。例如:3145 |
Content-Encoding | 内容编码 | 响应体的压缩编码,如 gzip, deflate等。 |
Content-Language | 内容语言 | 响应体的语言。例如:zh-CN |
Content-Location | 内容位置 | 响应体的 URI。例如:/index.html |
Content-Range | 内容范围 | 响应体的字节范围,用于分块传输。例如:bytes 0-999/8000 |
Cache-Control | 缓存控制 | 控制响应的缓存行为, 如 no-cache 表示必须重新请求。 |
Connection | 连接 | 管理连接的选项,如keep-alive或close,keep-alive 表示连接不会在传输后关闭 |
Set-Cookie | 设置 Cookie | 设置客户端的 cookie。例如:sessionId=abc123; Path=/; Secure |
Expires | 过期时间 | 响应体的过期日期和时间。例如:Thu, 18 Apr 2024 12:00:00 GMT |
Last-Modified | 最后修改时间 | 资源最后被修改的日期和时间。例如:Wed, 18 Apr 2024 11:00:00 GMT |
ETag | 实体标签 | 资源的特定版本的标识符。例如:“33a64df551425fcc55e6” |
Location | 位置 | 用于重定向的 URI。例如:/newresource |
Pragma | 实现特定的指令 | 包含实现特定的指令,如 no-cache。 |
WWW-Authenticate | 认证信息 | 认证信息,通常用于HTTP认证。例如:Basic realm=“Access to the site” |
Accept-Ranges | 接受范围 | 指定可接受的请求范围类型。例如:bytes |
Age | 经过时间 | 响应生成后经过的秒数,从原始服务器生成到代理服务器。例如:24 |
Allow | 允许方法 | 列出资源允许的 HTTP 方法 。例如:GET, POST,HEAD等 |
Vary | 变化 | 告诉下游代理如何使用响应头信息来确定响应是否可以从缓存中获取。例如:Accept |
Strict-Transport-Security | 严格传输安全 | 指示浏览器仅通过 HTTPS 与服务器通信。例如:max-age=31536000; includeSubDomains |
X-Frame-Options | 框架选项 | 控制页面是否允许在框架中显示,防止点击劫持攻击。例如:SAMEORIGIN |
X-Content-Type-Options | 内容类型选项 | 指示浏览器不要尝试猜测资源的 MIME 类型。例如:nosniff |
X-XSS-Protection | XSS保护 | 控制浏览器的 XSS 过滤和阻断。例如:1; mode=block |
Public-Key-Pins | 公钥固定 | HTTP 头信息用于HTTP公共密钥固定(HPKP),一种安全机制,用于防止中间人攻击。例如:pin-sha256=“base64+primarykey”; pin-sha256=“base64+backupkey”; max-age=expireTime |
在做前后端交互的时候需要注意的主要有age
,allow
,set-cookie
,expires
,Content-Type
这几个字段
之中特别需要注意的是content-type
如果你写过后端,碰巧用的是java servlet的话,你一定用过这个方法 req.getParameter(“”);
如果你是下面情况
当你与前端交流的话你可能会读不到这个值
这个需要前端使用content-type:application/x-www-form-urlencoded
这个协议主要处理参数比较少的请求,请求体大的话一般用application/json
今天我就碰到了,当我使用如下代码时
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:8080/s', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
const data={
id:'10'
}
xhr.send(JSON.stringfy(date));
这个是没有用
的,虽然我请求头的content-type是这个,但是我的请求体格式却是application/josn
格式
这个需要专门的参数
const formData = new URLSearchParams();
formData.append('id', '10');
const xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:8080/s', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(formData.toString());
这样才是对的,
如果你需要上传图片等资源时,往往需要换成multipart/form-data
而参数体就需要换成下面的
let formData = new FormData()
formData.append('file', file.raw)// 传文件
...
xml.send(formData);
其他的我就不过多讲解了,与后端讨论后如果有不会的直接上网搜这块,搜素范围给你缩小了,