rvi*_*hne 7 javascript couchdb cors pouchdb preflight
以下代码(使用PouchDB身份验证插件)失败,因为它触发浏览器发送CORS预检请求,而CouchDB不支持OPTIONSHTTP方法.
var db = new PouchDB("http://localhost:5984/mydb");
db.login('username', 'password');
// assume the database URL and login info are valid
Run Code Online (Sandbox Code Playgroud)
这是错误(在Chrome中).请注意,Edge中也会出现此问题,但Firefox中不会出现此问题:
XMLHttpRequest无法加载http:// localhost:5984/_session.预检的响应具有无效的HTTP状态代码405
以下是Chrome为请求发送的标头(在Firefox中没有明显不同):
POST /_session HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 25
Accept: application/json
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:8080/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,es-419;q=0.6,es;q=0.4
Run Code Online (Sandbox Code Playgroud)
我已经通过add-cors-to-couchdbNode脚本启用了CORS .我尝试过的事情:
OPTIONS方法[cors]{ ajax: { content_type: "text/plain" } }作为第三个参数传递给login所以,我的问题是:
遇到同样的问题。Chrome 最近似乎开始更加积极地发送 OPTIONS 预检。部分解决方法是在 CORS 标头中指定特定来源而不是“*”,因此
curl -X PUT $HOST/_config/cors/origins -d '"localhost:8080"'
Run Code Online (Sandbox Code Playgroud)
或类似的。
我仍然收到预检错误,但现在 PouchDB 已成功进行身份验证,因此我可以忽略该错误。我认为解决方法是让 CouchDB 响应 _session url 上的选项。
编辑,更多信息在这里 https://github.com/nolanlawson/pouchdb-authentication/issues/111
| 归档时间: |
|
| 查看次数: |
628 次 |
| 最近记录: |