最近两天一直困扰我一个问题,就是网关上api,在被前端页面调用的时候报跨域问题。
Response to preflight request doesn‘t pass access control check: No ‘Access-Control-Allow-Origin
启用了 cron插件,但是还是报跨域问题,翻阅了少的可怜的文档资料及参考资料。插件的挨个参数进行测试,发现1.1.x版本的网关居然不支持options的动作。怀疑此版本网关不支持跨域。后来去测试2.4.x版本的网关,发现支持options的动作,但是还是报同样的错误。到这里 我想到了一个问题,可能不是插件的问题,问题应该是API本身上。。。。
再结合问题本身,问题出现在了API的设置的Method上,因为API设置了GET,所以options的动作在网关上不存在,故报404。
赶紧去验证自己的 猜想,修改API的Method为null,测试调用,跨域问题解决了!
这里options 是干啥的,简单的解释,浏览器使用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。
详细的解释可以看看这个大神的