首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支持的Sockjs回退

支持的Sockjs回退
EN

Stack Overflow用户
提问于 2015-09-09 13:19:27
回答 1查看 1.7K关注 0票数 2

我的项目使用Security + Spring,并处理websocket (通过stomp+sockjs)。

当我测试sockjs时,返回403。如果我在安全上下文中关闭csrf,就可以了。

如果我像这样覆盖sockjs AbstractXHRObject构造函数:没关系:

代码语言:javascript
复制
function AbstractXHRObject(method, url, payload, opts) {
  debug(method, url);
  var self = this;
  EventEmitter.call(this);

  // HACK : add csrf headers
  opts["headers"][csrfHeader] = csrfToken;

  setTimeout(function () {
    self._start(method, url, payload, opts);
  }, 0);
}

当然,我必须检查选项是否为无效.

我的问题是:,在SockJS的XHR回退对象中添加头的方法是什么?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-09-14 14:29:17

最后,我在安全上下文中禁用了sockjs的CSRF。

代码语言:javascript
复制
 <security:csrf request-matcher-ref="csrfMatcher" />

而斗牛士:

代码语言:javascript
复制
public class CsrfSecurityRequestMatcher implements RequestMatcher {

    private Pattern                 allowedMethods      = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)$");
    private AntPathRequestMatcher   unprotectedMatcher  = new AntPathRequestMatcher("/ws/**/xhr_send**");

    @Override
    public boolean matches(HttpServletRequest request) {
        if (allowedMethods.matcher(request.getMethod()).matches()) {
            return false;
        }

        return !unprotectedMatcher.matches(request);
    }
}

注意:它遵循http://blogs.sourceallies.com/2014/04/customizing-csrf-protection-in-spring-security/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32480696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档