环境:
在VirtualBox上运行的CouchDB 2.2.0,运行最新的Debian映像。网络类型是桥接的,所有端口都是打开的,没有https。
Vue3.js应用程序(不使用任何Vue功能访问数据库)
远程访问JS软件包:
浏览器:Chrome最新版
相关的CouchDB local.ini设置
[couch_peruser]
enable = false
delete_dbs = false
[chttpd]
port = 5984
require_valid_user = false
proxy_use_secret = false
bind_address = 0.0.0.0
authentication_handlers = {chttpd_auth, cookie_authentication_handler}, {chttpd_auth, default_authentication_handler}
[httpd]
bind_address = 127.0.0.1
enable_cors = true
(default authentication handlers set in default.ini)
authentication_handlers = {couch_httpd_auth, cookie_authentication_handler}, {couch_httpd_auth, default_authentication_handler}
[couch_httpd_auth]
secret = (hash num)
require_valid_user = false
allow_persistent_cookies = true
[cors]
origins = *
headers = accept, authorization, content-type, X-Auth-CouchDB-UserName, origin, referer
credentials = true
methods = GET, PUT, POST, HEAD, DELETE
会发生什么
如果我通过curl进行查询,则会在响应中得到一个cookie。
这是curl调用:
curl -v http://couchman.lcldev:5984/_session \
-H "Content-Type:application/json" \
-H "X-Auth-CouchDB-UserName:<uname>" \
-d '{"name":"<uname>","password":"<passwd>"}'
这是回应:
< HTTP/1.1 200 OK
< Cache-Control: must-revalidate
< Content-Length: 47
< Content-Type: application/json
< Date: Wed, 10 Oct 2018 21:16:10 GMT
< Server: CouchDB/2.2.0 (Erlang OTP/19)
< Set-Cookie: (cookie info)
<
{"ok":true,"name":"<name>","roles":["<roles>"]}
是的。我得到一个饼干。
但是,如果我从应用程序(使用 fetch 或 axios )中调用它,我只会得到以下标头:
Response headers:
cache-control,must-revalidate
content-type,application/json
server,CouchDB/2.2.0 (Erlang OTP/19)
没有 Set-Cookie 标头。
那么,怎么了?我想念什么?
答案 0 :(得分:0)
在第一条评论中得到答复-有关更多信息,请参见主题。