http中的预检请求
文章类型:http
发布者:hp
发布时间:2025-04-17
预检请求是浏览器在发送非简单跨域请求前自动发起的 OPTIONS 请求,用于确认服务器是否允许后续实际请求
(1)非简单HTTP方法
PUT、DELETE、PATCH、CONNECT
(2)请求包含非简单Content-Type
application/x-www-form-urlencoded
multipart/form-data
text/plain
(3)携带自定义或非安全请求头
Authorization、X-Custom-Header 等自定义头
1:浏览器发起预检
Origin:当前网页域名(必填)
Access-Control-Request-Method:实际请求的方法(如PUT)
Access-Control-Request-Headers:实际请求将携带的自定义头部(如X-Token)
2:服务器响应验证
Access-Control-Allow-Origin:允许的源(如https://example.com)
Access-Control-Allow-Methods:允许的方法(如GET, POST, PUT)
Access-Control-Allow-Headers:允许的头部(如X-Token, Content-Type)
Access-Control-Max-Age:预检结果的缓存时间(秒,避免重复预检)
3:发送实际请求
若服务器验证通过,浏览器发送实际请求
axios("http://www.cqhxb.com/api/user",{
method:"POST",
headers:{// 设置请求头
a: 1,
b: 2,
content-type: "application/json"
},
body: JSON.stringify({ name: "john", age: 20 })
});
1:简单请求
请求方式=>仅使用特定 HTTP 方法,GET、POST、HEAD
仅包含安全请求头=>Accept、Accept-Language、Content-Language、Content-Type
Content-Type 限制=>application/x-www-form-urlencoded、multipart/form-data、text/plain
1:预检请求是 CORS 机制的 “安全门卫”,通过 OPTIONS 方法提前验证跨域请求的合法性
2:浏览器自动触发
3:跨域请求是前提