在Cloudant本地启用CORS
我已经使用docker镜像设置了一个cloudant本地数据库。
当我尝试使用托pipe在localhost:8000上的JavaScript应用程序发送云查询时,它会给我一个CORS错误。
如何在Cloudant本地启用CORS? 我已经尝试了以下
- PUT请求,如https://docs.cloudant.com/cors.html#setting-the-cors-configuration
- 检查仪表板,但本地实例没有“帐户”选项卡可用。
像@anirus一样的答案,但是有一个非常糟糕的方法。 如果您已按照https://hub.docker.com/r/ibmcom/cloudant-developer/中的当前说明命名容器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
。 它也应该用逗号分隔的列表,但是你可能一次只能在一个应用上工作。 -
无论何时通过将
-v `pwd`/default.ini:/opt/cloudant/etc/default.ini
到-v `pwd`/default.ini:/opt/cloudant/etc/default.ini
的命令行参数列表来运行容器,卷都将修改的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
到目前为止,我所有的调查都表明,这在本地Cloudant上不受支持。
这可以通过在数据库启动前编辑Cloudant设置文件的自定义Dockerfile来完成。 我用这个 –
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
它将启用origin origins=*
cors,并接受来自CORS连接的凭证。
你可以把它放在一个Dockerfile
,然后Dockerfile
docker build
和Dockerfile
docker run
它。