【问题标题】:Best practices for handling CORS between Spring and Angular JS?在 Spring 和 Angular JS 之间处理 CORS 的最佳实践?
【发布时间】:2014-09-15 13:36:00
【问题描述】:

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

【问题讨论】:

    标签: spring angularjs spring-security cors


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-07-31
      • 2018-12-29
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      相关资源
      最近更新 更多