Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Spring和Angular JS之间处理COR的最佳实践?_Spring_Angularjs_Spring Security_Cors - Fatal编程技术网

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

在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”(因为我们使用的

我们正在使用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 security.xml
中专门为OPTIONS方法设置ROLE_ANONYMOUS解决了这个问题:

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