在Cloudant本地启用CORS

我已经使用docker镜像设置了一个cloudant本地数据库。

当我尝试使用托pipe在localhost:8000上的JavaScript应用程序发送云查询时,它会给我一个CORS错误。

如何在Cloudant本地启用CORS? 我已经尝试了以下

  1. PUT请求,如https://docs.cloudant.com/cors.html#setting-the-cors-configuration
  2. 检查仪表板,但本地实例没有“帐户”选项卡可用。 Cloudant本地仪表板

像@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 buildDockerfile docker run它。