Spring Boot和XMLHttpRequest

时间:2016-04-02 05:01:34

标签: spring-security spring-boot

我很难理解Spring Boot(v1.3.3)如何处理X-Requested-With:XMLHttpRequest标头。我的理解是这个标题告诉Spring Boot,对于没有经过身份验证的会话的请求,返回401-Unauthorized错误,而不是302-Found,其中包含登录页面的位置。

我已将AngularJS客户端设置为为任何路由发送此标头,然后通过显示对话框配置$ http拦截器以对401错误进行操作。使用没有额外安全配置的Spring Boot服务器对我不起作用。

对CURL进行一些调查:

  1. 似乎还需要提供-H "Accept: application/json"标题。
  2. curl -v -H "X-Requested-With: XMLHttpRequest" localhost:9080/返回302,而curl -v -H "X-Requested-With: XMLHttpRequest" -H "Accept: application/json" localhost:9080/返回401。

    问题:为什么还需要application / json标头?我可以不同地配置它(即不需要application / json标头)吗?我应该这样配置,还是采取其他方法?我不想要求application / json头的原因是因为我不允许公共访问某些资源,例如HTML模板和JS代码,并且希望为这些资源返回401。

    1. 似乎JSESSIONID cookie可能会影响响应。
    2. curl -v -H "X-Requested-With: XMLHttpRequest" -H "Accept: application/json" localhost:9080/返回401,而curl -v -H "X-Requested-With: XMLHttpRequest" -H "Accept: application/json" -H "Cookie: JSESSIONID=63EA6E09F64B98938E4495DF9898323A" localhost:9080/'返回302。

      问题:为什么(有效)JSESSIONID cookie的存在会有什么不同?

      我已经查看了Spring Security和Spring Boot的源代码,但我无法将这些内容整理在一起。非常感谢任何帮助。

0 个答案:

没有答案