忽略所有HTTP.OPTIONS调用的身份验证是否安全?

时间:2016-02-26 04:27:54

标签: angularjs spring http authentication spring-security

我的服务有来源请求。该服务期望"身份验证"标头是一个标记。

Web客户端使用angularjs拦截器传递授权令牌,但获取

OPTIONS http://<domain>:<port>/xxxx 401 (Unauthorized)
XMLHttpRequest cannot load http://<domain>:<port>/xxxx. Response for preflight has invalid HTTP status code 401

因此,无法获得Access-Control-Allow-Headers : Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With作为回复。因此,以下Authorization调用中的GET标头将被忽略!

但是当我禁用OPTIONS方法的身份验证时 - 我添加了antMatchers(HttpMethod.OPTIONS,"/**").permitAll() -  Web应用程序能够按预期发送Authorization标头。

在我的服务中对所有HTTP.OPTIONS方法进行未经过身份验证的调用是否安全?

相关问题:Disable Spring Security for OPTIONS Http Method

1 个答案:

答案 0 :(得分:0)

OPTIONS调用是浏览器确定是否允许对API进行跨源调用的方法。浏览器不会在此次通话中发送Authorization标题。

您只需返回一个状态代码,指示是否允许跨越原始呼叫(200 OK或403 Forbidden)。如果允许,浏览器将使用Authorization标头发出实际请求,然后检查凭据。