首页 > 其他分享 >HTTP 响应头信息与前后端交互时content-type重要性

HTTP 响应头信息与前后端交互时content-type重要性

时间:2024-10-30 18:19:57浏览次数:3  
标签:例如 00 HTTP 响应 formData content xhr Content type

以下是响应头的大部分属性

响应头信息中文翻译描述
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-ProtectionXSS保护控制浏览器的 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);

其他的我就不过多讲解了,与后端讨论后如果有不会的直接上网搜这块,搜素范围给你缩小了,

标签:例如,00,HTTP,响应,formData,content,xhr,Content,type
From: https://blog.csdn.net/qq_73917015/article/details/143371383

相关文章

  • TYPE-C PD浅谈(二)- E-Marker
    E-Marker指的是在TYPE-C缆线中会被放置一颗识别IC,这等于是这条缆线的身份证,其功能主要是在宣告缆线的能力、缆线ID及制造商ID等。前面章节有提到当装置对接后,CC其中会有1pin变成VCONN供电出来,就是为了供电给E-marker来使用。对接后供电端(Provider)会去读取E-Marker的电流承载能......
  • TYPE-C PD浅谈(一)
    聊聊USBPowerDelivery两三事,接下来会依下列几个主题来探讨WhatisPowerDeliveryE-MarkerAttachedSourceCAPSinkCAPPowerRoleSwapDataRoleSwapVCONNSwapAlternateModeChargerDesignNoteWhatisPowerDeliveryUSB界面历经20年的演变,在界面上一直没有太......
  • # [Educational Codeforces Round 171](https://codeforces.com/contest/2026)
    EducationalCodeforcesRound171D.SumsofSegments定义四个前缀和:\(s_i=a_1+a_2+\dots+a_i\)\(u_i=s_1+s_2+\dots+s_i\)\(t_i=s(i,i)+s(i,i+1)+\dots+s(i,n)\)\(ts_i=t_1+t_2+\dots+t_i\)\(s_i\)为\(a_i\)的前缀和,\(u_i\)为\(s_i\)的前缀和,\(t_i\)为分块之后第......
  • Ctype.h头文件
    Ctype.h头文件字符测试函数名称如果是下列参数,返回值为真isalnum()字母或数字isdigit()数字isxdigit()十六进制字符isalpha()字母islower()小写字母isupper()大写字母iscntrl()控制字符,如Ctrl+Bisprint()可打印字符isblank()标准的空白......
  • HTTPS 加密方式
    1.HTTP和HTTPSHTTP是明文传输,敏感信息容易被中间劫持。HTTPS=HTTP+加密,即使传输的数据被劫持了也无法解密。2.加密方式:对称加密,非对称加密对称加密用同一个key加密解密。非对称加密一对key(公钥私钥),公钥加密,私钥解密(or反过来)。具体实现:1.客户端发起连接:你访问一......
  • Parameters参数、增删改标签、事务、typeAliases
    1.获取传入的参数值1.#{}形式传参,Mybatis会将SQL语句中的#{}转换为问号占位符?  <!--根据商品编号,查询商品信息--><selectid="selectById"parameterType="int"resultType="com.bdqn.pojo.Goods">   select*fromgoodswhereid=#{id}</select......
  • https 的本质、证书验证过程以及数据加密
    1.什么是HTTPSHTTP加上加密处理和认证以及完整性保护后即是HTTPS。它是为了解决HTTP存在的安全性问题,而衍生的协议,那使用HTTP的缺点有:1.通信使用明文可能会被窃听2.不验证通信方的身份可能遭遇伪装3.无法验证报文完整性,可能已遭篡改 HTTPS并非是一种新协议,只是H......
  • HTTP知识点
    常见题目:1.HTTP常见的状态码1xx服务器收到请求,但还没返回数据。(不常用)2xx请求成功,如2003xx重定向,如3024xx客户端错误,如4045xx服务端错误,如500-常见状态码:200成功301永久重定向(配合location,浏览器自动处理),location是新的地址,浏览器会记住这个地址,浏览器永远......
  • 【前端】在 Next.js 开发服务器中应该如何配置 HTTPS?
    在Next.js的开发环境中,默认情况下是使用HTTP协议的。但是,您可以通过一些配置来启用HTTPS。这在开发阶段可能很有用,尤其是在需要测试涉及安全传输的应用场景时。下面是如何在Next.js开发环境中配置HTTPS的步骤:方法一:使用https模块您可以使用Node.js的内置模......
  • 【花雕学编程】Arduino动手做(237)---使用 ESP32 V1 Rev1 自身的热点来创建一个简易的 H
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来——小小的......