在Spring和Angular JS之间处理CORS的最佳实践?

时间:2014-07-24 06:05:43

标签: spring angularjs spring-security cors

我们正在使用Java Spring构建rest api。我们正在使用angularjs作为前端。其余的api在一个域中,angularjs在另一个域中。最初,当我试图做一个' POST'请求从角度到其余的api,它给出了CORS错误。然后我们通过在后端设置CORS过滤器来解决这个问题。但是当我们尝试执行get请求时,它会抛出401个未经授权的错误。这是因为,我们的获取请求不是简单请求'因为请求具有内容类型作为application / json,并且标题具有“授权”和#39; (因为我们使用基本的身份验证)。因此,浏览器会发送预检' OPTIONS'在发送' GET'之前请求服务器请求。因此,' OPTIONS'会引发401错误。 Spring安全部门要求拦截网址。这是因为' OPTIONS'请求没有任何凭据。所以为了解决这个问题,我们已经设置了方法=" GET"在spring-security.xml中拦截url。这解决了这个问题。但这是一个很好的做法,在拦截网址中指定方法吗?我们正在遵循的流程也是一个好的做法?

1 个答案:

答案 0 :(得分:0)

我不知道它是否是最佳做法,但我们遇到了同样的问题并通过专门为spring-security.xml中的OPTIONS方法设置ROLE_ANONYMOUS来修复它:

<intercept-url pattern="/users" method="OPTIONS" access="ROLE_ANONYMOUS"/>