预检请求

简介: 非简单CORS请求会先发送OPTIONS预检请求,检查服务器是否允许跨域。预检包含Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段,确认后才发送正式请求,否则报错。(238字)

4.1 预检请求
非简单请求是那种对服务器有特殊要求的请求,比如请求方法是PUT或DELETE,或者Content-Type字段的类型是application/json。
非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。
浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。
下面是一段浏览器的JavaScript脚本。
var url = 'http://api.alice.com/cors';
var xhr = new XMLHttpRequest();
xhr.open('PUT', url, true);
xhr.setRequestHeader('X-Custom-Header', 'value');
xhr.send();
上面代码中,HTTP请求的方法是PUT,并且发送一个自定义头信息X-Custom-Header。
浏览器发现,这是一个非简单请求,就自动发出一个"预检"请求,要求服务器确认可以这样请求。下面是这个"预检"请求的HTTP头信息。
OPTIONS /cors HTTP/1.1
Origin: http://api.bob.com Access-Control-Request-Method:
PUT Access-Control-Request-Headers: X-Custom-Header
Host: api.alice.com Accept-Language: en-US
Connection: keep-alive User-Agent: Mozilla/5.0...
"预检"请求用的请求方法是OPTIONS,表示这个请求是用来询问的。头信息里面,关键字段是Origin,表示请求来自哪个源。
除了Origin字段,"预检"请求的头信息包括两个特殊字段。
(1)Access-Control-Request-Method
该字段是必须的,用来列出浏览器的CORS请求会用到哪些HTTP方法,上例是PUT。
(2)Access-Control-Request-Headers
该字段是一个逗号分隔的字符串,指定浏览器CORS请求会额外发送的头信息字段,上例是X-Custom-Header。

相关文章
|
9月前
|
自然语言处理 数据挖掘 测试技术
Qwen3-VL-Embedding系列上新:探索统一多模态表征与排序
2025年6月,Qwen3-VL-Embedding与Qwen3-VL-Reranker开源,基于Qwen3-VL打造,支持文本、图像、视频等多模态检索与跨模态理解,具备统一表示学习、高精度重排序能力,广泛适用于全球化多语言场景,助力高效多模态信息检索。
2935 5
|
7月前
|
人工智能 机器人 Linux
OpenClaw 阿里云轻量+本地部署:企业微信集成、大模型千问/Coding Plan对接与常见问题解答
OpenClaw(原Clawdbot)作为本地优先、模块化的AI代理平台,2026年版本深度适配企业微信生态,可实现企业微信内自然语言交互、任务自动化、信息查询与办公协作全场景覆盖。本文提供2026年阿里云轻量服务器、本地MacOS/Linux/Windows11完整部署流程,详解企业微信接入(自建应用+机器人双模式)、阿里云千问大模型API与免费Coding Plan API配置方法,附可直接复制的代码命令与高频问题解决方案,零基础用户也能快速搭建稳定、安全、可协作的企业级AI助手系统。
847 5
|
人工智能 自动驾驶 机器人
AI元年:2024年人工智能发展大事纪
3分钟了解2024年人工智能AI领域都发生了哪些改变我们生活和生产方式的大事儿。
3723 2
AI元年:2024年人工智能发展大事纪
|
9月前
|
存储 弹性计算 人工智能
阿里云服务器ECS计算型c9i实例ecs.c9i.large规格族性能参数及介绍指南
阿里云ecs.c9i.large基于Intel至强Granite Rapids处理器,2vCPU/4GiB内存,适用于中小规模数据库、Web服务及轻量AI场景,高性价比,支持弹性扩展与安全加固,助力高效上云。
319 2
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
645 69
|
人工智能 JSON 前端开发
如何解决后端Agent和前端UI之间的交互问题?——解析AG-UI协议的神奇作用
三桥君指出AG-UI协议通过SSE技术实现智能体与前端UI的标准化交互,解决流式传输、实时进度显示、数据同步等开发痛点。其核心功能包括结构化事件流、多Agent任务交接和用户中断处理,具有"一次开发到处兼容"、"UI灵活可扩展"等优势。智能体专家三桥君认为协议将AI应用从聊天工具升级为实用软件,适用于代码生成、多步骤工作流等场景,显著提升开发效率和用户体验。
2956 0
|
JavaScript 前端开发 数据可视化
20.6K star!Excel级交互体验!这款开源Web表格神器绝了!
Handsontable 是一款功能强大的 JavaScript 数据表格组件,提供类 Excel 的交互体验。支持实时协作、数据绑定、公式计算等企业级功能,可轻松集成到 React/Vue/Angular 等主流框架。
3267 11
|
存储 NoSQL MongoDB
MongoDB入门级别教程全(Windows版,保姆级教程)
一份全面的MongoDB入门级教程,包括在Windows系统上安装MongoDB、使用MongoDB Shell和Compass GUI进行数据库操作,以及MongoDB的基本数据类型和查询技巧。
3925 5
MongoDB入门级别教程全(Windows版,保姆级教程)
|
存储 数据可视化 网络安全
【最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR) (一)
【最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)
5395 0