docs: 添加文章内容(2013 ~ 2023)
This commit is contained in:
45
docs/content/description-cors-preflight-request.md
Normal file
45
docs/content/description-cors-preflight-request.md
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: CORS 预检请求(preflight request)
|
||||
date: 2025-03-15T23:08:14Z
|
||||
lastmod: 2025-03-15T23:08:41Z
|
||||
tags: [Web 前端,JavaScript,HTTP]
|
||||
---
|
||||
|
||||
# CORS 预检请求(preflight request)
|
||||
|
||||
## 内容来源
|
||||
|
||||
- [Preflight request - 术语表 | MDN](https://developer.mozilla.org/zh-CN/docs/Glossary/Preflight_request)
|
||||
- [跨源资源共享(CORS) - HTTP | MDN](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS)
|
||||
|
||||
## 简介
|
||||
|
||||
CORS 预检请求主要用于检测服务器是否支持 CORS(跨域资源共享)。
|
||||
|
||||
当有必要的时候,浏览器会自动发出一个预检请求;因此在正常情况下,前端开发者不需要自己去发这样的请求。
|
||||
|
||||
## 触发条件
|
||||
|
||||
某些请求(以下称其为 “简单请求”)不会触发 CORS 预检请求。
|
||||
若请求满足所有下述条件,则该请求可视为 “简单请求”:
|
||||
|
||||
- 使用下列请求方式之一
|
||||
|
||||
- GET
|
||||
- HEAD
|
||||
- POST
|
||||
- 除了被用户代理自动设置的 Header(例如 Connection、User-Agent)和其他不在 Fetch 规范中定义的 [禁用的 Header 名称](https://fetch.spec.whatwg.org/#forbidden-header-name) ,允许人为设置下列 [对 CORS 安全的 Header 字段](https://fetch.spec.whatwg.org/#cors-safelisted-request-header)
|
||||
|
||||
- Accept
|
||||
- Accept-Language
|
||||
- Content-Language
|
||||
- Content-Type(需要注意额外的限制)
|
||||
- 在 Header 中,`Content-Type` 的值为下列之一
|
||||
|
||||
- text/plain
|
||||
- multipart/form-data
|
||||
- application/x-www-form-urlencoded
|
||||
- 请求中的任意 `XMLHttpRequest` 对象均没有注册任何事件监听器;可以通过 `XMLHttpRequest.upload` 属性访问 `XMLHttpRequest` 对象。
|
||||
- 请求中没有使用 `ReadableStream` 对象。
|
||||
|
||||
|
Reference in New Issue
Block a user