在Cloudant本地启用CORS

时间:2016-09-13 00:49:47

标签: javascript docker cors cloudant

我使用docker image设置了cloudant本地数据库。

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

如何在Cloudant本地启用CORS?我试过以下

  1. PUT请求,如https://docs.cloudant.com/cors.html#setting-the-cors-configuration
  2. 中所述
  3. 选中了信息中心,但本地实例没有“帐户”标签。 Cloudant Local dashboard

3 个答案:

答案 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 builddocker run

答案 2 :(得分:0)

到目前为止,我所有的调查都表明本地Cloudant不支持此功能。