2

腾讯地图WebService API 和 CORB的误会

最近业务开发中,涉及到了腾讯地图API 、 跨域 、 CORB。虽然最后的结果方法很简单,

但是觉得这个解决问题的过程,还是值得记录一下的。

业务内容如下:

  • 1.我根据JS-SDK,配置好后端返回的签名、随机字符串、时间戳、appId,然后使用wx.getLocation拿到经纬度

(签名是根据这4个参数算出来 noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url)

  • 2.获取经纬度后,根据经纬度拿到当前所属省份。 这个需要腾讯地图的WebService API,就会这里遇到的问题...
  • 3.之后就是拿着省份,去请求后端的php接口,获取该省份对应的门店啦。

调用腾讯地图WebService API需要跨域

这个很好理解。那么怎么做呢,无非是

  • CORS。 因为是第三方API,没法设置header,所以pass
  • JSONP
  • 服务端代理

服务端代理,我觉得肯定可以,但是前后端分离,不想麻烦后端大哥了,就想用JSONP来跨域,

但是一直提示CORB的这个限制
clipboard.png

于是我就研究了一圈

CORB是啥

CORB如何触发

CORB触发了大概有什么表现。

详细的可以看这大哥的文章 https://segmentfault.com/a/11...

简单说CORB会显示src资源的获取。这里触发了CORB是因为返回了response header的content-type是json

满足了触发条件,就导致返回的数据的body被覆盖为null

但是这里解决方案其实就是,想用jsonp需要设置参数 output: jsonp

就这样一个问题,折腾了一圈,哭笑不得😂

现在想想其实我用jsonp,腾讯返回给我json对象,我第一时间就应该想到这个格式不对的

这个json格式应该是给服务端代理,请求接口用的


Ziwei
4.1k 声望420 粉丝

前端程序员