You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

尝试连接mLab时遇跨域错误:localhost下http-server运行仍报错

解决localhost下连接mLab时的跨域错误

我懂你现在的疑惑——明明已经用http-server把应用跑在localhost(正经的http协议)上了,却还是碰到了这个通常只在直接打开本地file://文件时才会出现的跨域错误。别慌,咱们一步步排查解决:

  • 先确认你的mLab请求URL有没有写错
    会不会不小心把mLab的连接地址写成了相对路径或者本地文件路径?比如误写了./mongodb://xxx或者file://xxx?mLab的正确请求URL必须是完整的http/https开头的地址,比如https://api.mlab.com/api/1/databases/你的数据库名/collections/你的集合名,仔细检查一下代码里的请求地址是不是标准的网络协议开头。

  • 再核对http-server的运行状态
    确保你是在项目根目录下启动的http-server,而且访问应用时用的是http://localhost:xxxx(xxxx是你指定的端口,默认8080),绝对不是直接双击打开index.html(那会用file://协议)。可以看看浏览器地址栏,确认开头是http://而不是file://

  • 检查mLab的CORS配置
    就算你的应用在localhost,mLab那边可能默认限制了跨域请求。登录mLab控制台,找到你的数据库,看看有没有CORS相关的设置项——你需要把http://localhost:xxxx添加到允许的跨域来源列表里。另外,请求里一定要带上正确的mLab API密钥,这也是很多人容易忽略的点。

  • 排除浏览器缓存或插件干扰
    有时候浏览器缓存了旧的请求记录,或者某些插件(比如广告拦截、跨域拦截类的)会偷偷干扰请求。试试清空浏览器缓存,或者用隐私/无痕模式打开页面,看看错误会不会消失。

  • 本地代理兜底方案
    如果上面的方法都不管用,你可以让http-server帮你转发请求,绕过跨域问题。启动的时候加上代理参数就行:

    http-server -P https://api.mlab.com
    

    这样你的前端请求就可以写成本地相对路径,比如/api/1/databases/...,由http-server自动转发到mLab,完美避开跨域限制。

内容的提问来源于stack exchange,提问作者Francisco Junior

火山引擎 最新活动