CouchDB:JavaScript Fetch API由于本地主机上的CORS而无法连接

dtcbnfnu  于 2023-05-21  发布在  CouchDB
关注(0)|答案(1)|浏览(211)

经过更多的测试,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"
  }
}
txu3uszq

txu3uszq1#

如果您正在发出包含凭据的CORS请求,则不能使用origins = *。根据MDN文档:
注意:当响应一个凭证请求时,服务器必须在Access-Control-Allow-Origin头的值中指定一个原点,而不是指定“*”通配符。
因此,您需要http://localhost:5984local.ini中的任何其他相关主机。这个问题不是CouchDB特有的,您需要显式地指定从浏览器向其发出CORS请求的任何API的来源。

相关问题