CouchDB本地环境添加credentials:include后Fetch API遇CORS连接失败
解决CouchDB带Credentials的Fetch请求CORS问题
核心问题分析
报错指向预检OPTIONS请求未返回200 OK状态,触发问题的关键原因有两个:Fetch请求参数格式错误,以及需确认CouchDB的CORS配置完全生效。
第一步:修正Fetch请求参数格式
你的当前配置错误地将method、credentials、mode放在了headers对象内部,这些属于Fetch的顶层选项,并非请求头。正确写法如下:
fetch('http://localhost:5984/', { method: 'GET', mode: 'cors', credentials: 'include', headers: { 'Content-Type': 'application/json' } })
第二步:确保CouchDB的CORS配置生效
- 重启CouchDB服务:修改
local.ini后必须重启服务,配置才会加载生效 - 检查OPTIONS请求响应:打开浏览器开发者工具的Network面板,查看预检OPTIONS请求的响应:
- 确认响应状态为200 OK
- 响应头需包含:
Access-Control-Allow-Origin: http://localhost:8080(带credentials时,建议指定具体origin而非*,避免兼容性问题)Access-Control-Allow-Credentials: trueAccess-Control-Allow-Methods涵盖你使用的请求方法Access-Control-Allow-Headers包含你发送的请求头字段
内容的提问来源于stack exchange,提问作者Ronnie Smith
相关产品推荐
相关产品推荐

