在Spring和Angular JS之间处理COR的最佳实践?
我们正在使用JavaSpring构建RESTAPI。我们在前端使用angularjs。RESTAPI在一个域中,angularjs在另一个域中。最初,当我尝试从angular向RESTAPI发出“POST”请求时,它给出了CORS错误。然后我们通过在后端设置CORS过滤器解决了这个问题。但当我们尝试执行get请求时,它抛出了401个未经授权的错误。这是因为,我们的get请求是“非简单请求”,因为请求的内容类型为application/json,头具有“Authorization”(因为我们使用的是基本的auhentication)。因此,在发送“获取”请求之前,浏览器会向服务器发送飞行前“选项”请求。因此,Spring安全性通过拦截url为“OPTIONS”请求抛出401错误。这是因为“选项”请求没有任何凭据。因此,为了克服这个问题,我们在spring-security.xml的拦截url中放置了method=“GET”。这解决了这个问题。但是,在截取url中指定方法是一种好的做法吗?我们正在遵循的过程也是一个好的实践吗?我不知道这是否是最佳实践,但我们也遇到了同样的问题,并通过在在Spring和Angular JS之间处理COR的最佳实践?,spring,angularjs,spring-security,cors,Spring,Angularjs,Spring Security,Cors,我们正在使用JavaSpring构建RESTAPI。我们在前端使用angularjs。RESTAPI在一个域中,angularjs在另一个域中。最初,当我尝试从angular向RESTAPI发出“POST”请求时,它给出了CORS错误。然后我们通过在后端设置CORS过滤器解决了这个问题。但当我们尝试执行get请求时,它抛出了401个未经授权的错误。这是因为,我们的get请求是“非简单请求”,因为请求的内容类型为application/json,头具有“Authorization”(因为我们使用的
spring security.xml
中专门为OPTIONS方法设置ROLE_ANONYMOUS解决了这个问题:
<intercept-url pattern="/users" method="OPTIONS" access="ROLE_ANONYMOUS"/>