Kong - cors 问题排查与解决

kong - cors插件 问题排查与解决

最近遇到一个问题,使用kong网关时,当我们在路由route上配置了插件跨域cors和认证key-auth插件之后,通过ajax模拟跨域方式请求时,需要在header中携带 apikey : 123456 时,一直无法访问成功,仍旧显示跨域的错误信息!

问题排查

1、首先认为是cors插件在接收时优先级高于key-auth插件,故而设置headers和exposed_headers的值,如下图:


然而经过测试,仍旧无效!


2、经过不断的尝试,起初,我只使用了google浏览器进行测试,后来,使用Safari浏览器进行了尝试,未进行任何设置如下:

这里,在safari浏览器中有个非常牛皮的设置,直接解决跨域的问题,当然,这种方式不可取!在【开发】下拉项中选中【停用跨源限制】,这样就可以解决上述的问题,当然重复一次:不可取!!!


这时,有个奇怪的玩意露出马脚了~ 我们在safari的控制台下的【资源】栏发现了端倪!请注意看下图:


注意看红色框中的内容:请求方式为OPTIONS? 并且还未请求到数据:404!!!原来,他在正式访问接口之前,进行了一次OPTIONS预检请求(推荐阅读:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS)!然而,我们的接口并没有定义OPTIONS的请求方式啊,所以访问404了,预检请求失败,后续也就无法继续请求了!!!

问题解决

那现在来解决这个OPTIONS请求,我们给接口添加上OPTIONS请求方式:


同时,将新的设置更新至kong中!这时,我们再去调用ajax请求,结果成功!!!Amazing~


你可能感兴趣的:(Kong - cors 问题排查与解决)