我使用docker image设置了cloudant本地数据库。
当我尝试使用localhost:8000上托管的JavaScript应用程序发送cloudant查询时,它会给我一个CORS错误。
如何在Cloudant本地启用CORS?我试过以下
答案 0 :(得分:1)
与@anirus相同的答案,但它周围有非常 kludgy方式。如果您已将容器cloudant-developer
命名为https://hub.docker.com/r/ibmcom/cloudant-developer/中的当前说明:
在本地保存库存default.ini
文件:
docker exec cloudant-developer cat /opt/cloudant/etc/default.ini > default.ini
修改它以便enable_cors = true
代替false
在[cors]
部分,添加origins = http://localhost:3000
之类的行。它也应该以逗号分隔列表,但是你可能一次只能处理一个应用程序。
通过将default.ini
添加到 docker 的命令行参数列表中,只要您运行容器,就会将已修改的-v `pwd`/default.ini:/opt/cloudant/etc/default.ini
卷安装在原始文件上:
docker run --privileged --detach --volume cloudant:/srv -v `pwd`/default.ini:/opt/cloudant/etc/default.ini --name cloudant-developer --publish 8080:80 --hostname cloudant.dev ibmcom/cloudant-developer
答案 1 :(得分:1)
这可以使用自定义Dockerfile来完成,该数据库在启动数据库之前编辑Cloudant设置文件。我用过这个 -
FROM ibmcom/cloudant-developer:latest
RUN \
sed -i 's/enable_cors = false/enable_cors = true/g' /opt/cloudant/etc/default.ini && \
sed -i 's/\[cors\]/\[cors\]\norigins=*/g' /opt/cloudant/etc/default.ini && \
sed -i 's/credentials = false/credentials = true/g' /opt/cloudant/etc/default.ini
它将启用origins=*
的角色,并接受来自CORS连接的凭据。
您可以将其添加到Dockerfile
,然后docker build
和docker run
。
答案 2 :(得分:0)
到目前为止,我所有的调查都表明本地Cloudant不支持此功能。