什么是CORS?什么是预检请求?

CORS是跨源资源共享的意思。

现在开发的过程中前后端分离,可能会出现浏览器发送给不同域名的服务器的需求。

这里涉及到一个名称:域名。域名包括协议,域名,端口号。三者完全相同就是同源。

不同源说明是跨域,那么会有限制:

1.服务器不能接受跨域的ajax请求

2.服务器不能接受cookie,localStorage,SessionStorage等

3.服务器不能访问非同源的dom

 

CORS的原理就浏览器和服务器对HTTP的协议头做一些约定和限制。

例如:

 举例:

 上面的注释说的很清楚了。

 

另外跨域中分普通请求和非普通请求(prelight)。

如何区分它们呢?

满足一下要求的就是普通请求:

  • 请求的方法只能是GET, POST, HEAD的一种
  • 请求的header的只能是AcceptAccept-Language, Content-LanguageContent-Type这些字段,不能超出这些字段
  • 对于请求的header的Content-Type字段,只能是以下值
    • text/plain
    • multipart/form-data
    • application/x-www-form-urlencoded

都满足以上条件的就是简单请求,否则就是非简单请求。

普通请求会被直接发送给服务端,而非简单请求,会提前发送预检请求,当预检请求通过了,才发送真实请求。
为什么这么操作呢?因为普通请求大多数是一些表格查询,计算不复杂,而且form是可以直接命令发给服务器,不需要通过ajax。
非普通请求则会有大量计算,如果预检不通过,就不需要进行大量的计算。
 
大家觉得内容简单,可以移步另一篇作者的博文,写的非常详细:你知道什么是预检请求吗? - 掘金 (juejin.cn)
posted @   IT知识生产小店铺  阅读(161)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示