经过更多的测试,CORS问题只有在我添加'credentials': 'include'
头时才会出现。...?
使用Chrome浏览器,我导航到127.0.0.1:5984并从couchdb服务器获得响应。
当我使用Chrome的JavaScript调用相同的地址时,它对http://127.0.0.1:5984和http://localhost:5984都失败了。
Access to fetch at 'http://localhost:5984/' from origin 'http://localhost:8080' has been blocked by CORS policy:
Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
couchdb盒上的local.ini
文件具有:
[chttpd]
enable_cors = true
[cors]
origins = *
credentials = true
methods = GET, POST, PUT, DELETE, OPTIONS, HEAD, TRACE, PATCH
headers = accept, authorization, content-type, origin, referer, cache-control, x-requested-with, X-Couch-Id, X-Couch-Rev
我的提取选项目前有:
{
"headers": {
"Content-Type": "application/json",
"method": "GET",
"credentials": "include",
"mode": "cors"
}
}
1条答案
按热度按时间txu3uszq1#
如果您正在发出包含凭据的CORS请求,则不能使用
origins = *
。根据MDN文档:注意:当响应一个凭证请求时,服务器必须在Access-Control-Allow-Origin头的值中指定一个原点,而不是指定“*”通配符。
因此,您需要
http://localhost:5984
和local.ini
中的任何其他相关主机。这个问题不是CouchDB特有的,您需要显式地指定从浏览器向其发出CORS请求的任何API的来源。