与CouchDB的CORS问题+;证书+;原点通配符
我正试图在flow.ch上从Cloudant迁移到Jelastic。我在本地测试(离子服务)时,PockDB出现CORS错误 除了CouchDB之外,Jelastic中还有其他配置吗? 无法加载XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:当请求的凭据模式为“包括”时,响应中“访问控制允许来源”标头的值不得为通配符“*”。因此,不允许访问源“”。XMLHttpRequest启动的请求的凭据模式由withCredentials属性控制与CouchDB的CORS问题+;证书+;原点通配符,cors,ionic2,couchdb,jelastic,Cors,Ionic2,Couchdb,Jelastic,我正试图在flow.ch上从Cloudant迁移到Jelastic。我在本地测试(离子服务)时,PockDB出现CORS错误 除了CouchDB之外,Jelastic中还有其他配置吗? 无法加载XMLHttpRequest。对飞行前请求的响应未通过访问控制检查:当请求的凭据模式为“包括”时,响应中“访问控制允许来源”标头的值不得为通配符“*”。因此,不允许访问源“”。XMLHttpRequest启动的请求的凭据模式由withCredentials属性控制 我在Jelastic上配置了CouchD
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
响应头的值
实现这样做的服务器代码很简单
但是,如果不能真正纠正这一缺陷,couchdb维护人员至少应该在您尝试设置这两个origins=*
+credentials=true
时修复其配置处理代码,使其难以失败
因为问题是,文档中的语句“您不能同时设置
origins=*
和credentials=true
选项”是不正确的。显然,您可以同时设置这两个选项(正如您的配置屏幕截图所证明的那样)-只是系统不会发出任何明显的警告/错误来告诉您,如果您将couchdb设置为这种方式,任何发送凭据的客户端请求都将失败。我认为您看到的问题的原因只与couchdb缺陷有关,事实上,您使用的jelastic对这两种方式都没有任何影响,您使用的客户机代码也不重要(重要的是,客户机正在发送带有凭据的跨源请求,因此如果您使用的是其他客户机代码,那么您也会遇到同样的问题).它不是特定于CouchDB的..它实际上是。因此,没有一个具有CORS设置的服务器端系统会允许这样做。couchdb的特点是couchdb无法在响应中自动回显源代码。许多或大多数其他具有CORS支持的服务器端系统都提供了这种功能。