我正试图在Cloud.ch上从Cloudant转移到Jelastic。在本地测试时,我在使用pouchdb时遇到了CORS错误(离子服务)。
除了CouchDB之外,Jelastic还有其他任何配置吗?
XMLHttpRequest无法加载http://xxx.flow.ch/xxx。对预检请求的响应没有通过访问控制检查:'访问控制 - 允许 - 来源'响应中的标题不能是通配符' *'当请求的凭据模式为' include'时。起源' http://localhost:8100'因此不允许访问。 XMLHttpRequest发起的请求的凭证模式由withCredentials属性控制。
答案 0 :(得分:3)
couchdb docs unfortunately say this:
您无法同时设置
origins = *
和credentials = true
选项
因此,这似乎意味着如果您希望使用凭据的跨源请求与couchdb一起使用,则必须将origins
值设置为允许来源的明确列表;例如:
[cors]
origins = http://localhost, https://localhost, http://couch.mydev.name:8080
顺便说一下,似乎应该将其作为couchdb引发。当设置credentials = true
时,couchdb不支持允许来自所有来源的请求,这是没有充分理由的。
许多/大多数其他Web服务器系统支持在包含凭据时允许来自所有来源的请求。它们处理它的方式是只取Origin
请求标头的值,基本上只是将它回显到Access-Control-Allow-Origin
响应标头的值。
实现执行此操作的服务器代码是微不足道的。
但是,如果没有实际纠正这个缺陷,那么当你尝试同时设置origins = *
+ credentials = true
时,couchdb维护者至少应该修复他们的配置处理代码。
因为事情是,那个声明“你不能在文档中的同一个”中设置origins = *
和credentials = true
选项是不正确的。很明显,可以同时设置两者(正如您的配置屏幕捕获证明) - 只是系统不会发出任何明显的警告/错误来告诉您发送凭据的任何客户端请求如果你设置了这样的沙发,那么将会失败。