解决受Shrio保护的资源无法跨域请求(CORS)的问题

今天在调试前端程序时,发现对于兽Shrio保护的资源,跨域请求无法被完成。

目前使用的API的认证方式是使用自定义的Header来完成,而浏览器在请求跨域的XMLHttpRequest时,会先发送一个pre-flight请求,method类型为OPTIONS。而这个请求并不会加上自定的Header,从而导致请求失败。我这里是返回了302,跳转到登录页面。

为了解决这个问题,我们选择了重载 AuthenticatingFilter 中的 isAccessAllowed 方法,让它对任何OPTIONS的请求返回true。

……