angularjs - Spring 安全 CSRF CORS

标签 angularjs rest spring-security cors csrf

问题陈述:我有一些使用 spring security 受 CSRF 保护的 restful API。此外,这些 API 将通过 Angular WEB UI 从不同的源/域访问。我不需要 Spring 身份验证,因为身份验证由 Siteminder 处理。

方法: 为了 CSRF 保护,我从 Dave Syer 那里点击了这个链接:The Login Page: Angular JS and Spring Security Part II除了一个问题(下面)外工作完美。

问题:当我的 angular html 客户端访问相同源/域上的 RESTful API 时,这段代码工作得很好;但是当我尝试从不同来源访问相同的 API 时,出现错误 403 - Access Forbidden - CSRF token error。

到目前为止,我通过扩展您的示例尝试过的方法:

  1. 添加了 CORS 过滤器 - Enabling Cross Origin Requests for a RESTful Web Service

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Max-Age", "3600");
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
    

上面没有运气。

请建议我是否需要做任何其他事情才能使其正常工作。

谢谢, 苏曼

最佳答案

CSRF 和 CORS 不是一回事。您现在可能已经对 CORS 部分进行了排序,但是您需要向任何 POST/PUT/DELETE 请求添加一个 CSRF token 。 Spring Security 在您引用的博客系列的 header 中发送 token ,Angular 从那里获取它(您需要添加几行代码才能使其正常工作)。

关于angularjs - Spring 安全 CSRF CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30231209/

相关文章:

php - Symfony2 REST API - 部分更新

javascript - 将参数传递给 angularjs/javascript 中的命名回调函数的问题

javascript - 指令根模板元素中的属性

json - 如何使用 REST/JSON/GET/POST 从我的 Node 服务器访问我的 couchdb?

java - 将 REST API 部署到 AWS

java - 如何使用 grails 1.3.2 和插件 spring-security-core 1 实现自定义 FilterSecurityInterceptor?

java - 使用 Spring Security 启用 h2 控制台

spring - Grails、Vaadin 和 Spring 安全插件一起使用

angularjs - 如何根据回复动态显示星级?

css - 如何使用material design让div float 在页面右侧(贴)