我有一个跨来源的服务请求。服务期望“authentication”头是一个令牌。
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

最佳答案

options调用是浏览器确定是否允许对api进行跨源调用的一种方法。浏览器不会在此调用上发送Authorization标题。
您只需返回一个状态代码,指示是否允许跨源调用(200 OK或403 Forbidden)。如果允许,浏览器将使用Authorization头发出实际请求,然后检查凭据。

08-06 03:15