前端踩过的 Allow 的坑,一文读懂 Allow 的缘由!
2024-01-19 13:40:25
互联网中的 Allow
在互联网上进行安全传输,需要有安全机制来确保数据的安全。其中一个重要的安全配置就是 Allow。Allow 主要与 HTTP 的 CORS 协议有关。CORS 协议允许浏览器与远程服务之间进行异步数据交互,而 Allow 则允许跨域请求中使用特定的 HTTP 头字段。
Allow 介绍
Allow 是 HTTP 协议中的一個头字段,它允许跨域请求中使用特定的 HTTP 头字段。Allow 的值可以是任何有效的 HTTP 头字段,但常见的允许字段主要与安全相关的请求头字段,如:
-
Allow: Authorization
-
Allow: Content-Type
-
Allow: X-Custom
HTTP 头字段中还有其他需要跨域使用时,配置 Allow 的时候,可根据字段的特点和功能,选择 Allow 配置的字段。如:Allow: Authorization 允许授权字段随跨域请求发送。
Allow 在跨域请求中的使用
跨域请求中使用 Allow 头字段可以允许客户端浏览器使用特定类型的请求头字段。以下是 Allow 在跨域请求中的典型使用场景:
-
当客户端浏览器向远程服务发送跨域请求时,它可能会包含一些需要授权的 HTTP 头字段。如果远程服务允许这些头字段,则可以使用 Allow 头字段来允许跨域请求中使用这些头字段。
-
当远程服务收到一个包含授权头字段的跨域请求时,远程服务可以通过 Allow 头字段来允许这些头字段的跨域请求。
具体的例子:图片跨域请求
图片的加载大部分都是通过 标签完成的,img 标签支持 crossorigin 属性,如果存在该 crosscr oss 属性,在发送请求的时候,会增加一个请求头,
Origin: allow
。
如果请求的域名和请求的 URL 的 Origin
不一致,则该请求为跨域请求,这个请求和图片是否允许跨域加载的关系不是很大。
如果图片是允许跨域加载的,返回一个 200 OK,响应头字段里包含 Allow: Origin。如果返回一个 204 No Content(阻止加载),或者 403 Forbidden(不允许加载),或者 404 NotFound(没有这个图片),请求头字段 Allow: Origin 会出现404。
这意味着,浏览器解析页面会遇到错误,错误的现象是:如果页面加载的时候,出现图片加载失败,在控制台里显示图片的加载失败,这个图片是有 Origin: allow
的。如果返回头字段是:Origin: allow
,这个图片是被阻止加载的。
结语
Allow 是跨域请求中非常重要的一个配置,它可以允许客户端浏览器使用特定类型的请求头字段。了解 Allow 的配置和使用对于前端工程师来说是非常有益的。本文对 Allow 的缘由进行了全方位的介绍,读懂 Allow 的来龙去脉。