如何通过Jqgrig请求发送Spring Security csrf
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Jqgrig请求发送Spring Security csrf相关的知识,希望对你有一定的参考价值。
我正在使用Jqrgrid与Spring Security,但我如何使用JQGrid请求发送CSRF
我不是Spring开发人员。您的问题的解决方案取决于您获取CSRF令牌的方式。似乎有两种主要方式:使用<meta>
与content
等于${_csrf.token}
或使用getCookie('csrftoken')
。
让我们跟随the part(或this one)的春季文档,我们添加<meta>
元素_csrf
和_csrf_header
如下
<!DOCTYPE html>
<html>
<head>
<meta name="_csrf" content="${_csrf.token}"/>
<!-- default header name is X-CSRF-TOKEN -->
<meta name="_csrf_header" content="${_csrf.headerName}"/>
<!-- ... -->
</head>
<!-- ... -->
然后我们可以在beforeSend
回调jQuery.ajax
方法中设置Ajax请求的安全性令牌:
$.ajax({
url: "someUrl",
...
beforeSend: function(jqXHR) {
xhr.setRequestHeader(
$("meta[name='_csrf_header']").attr("content"),
$("meta[name='_csrf']").attr("content")
);
}
});
另一方面,jqGrid已在内部发出Ajax请求。因此,您必须使用jqGrid回调来通知jqGrid在底层Ajax请求中执行相同操作。因此,应该使用jqGrid的loadBeforeSend
回调:
loadBeforeSend: function(jqXHR) {
var header = $("meta[name='_csrf_header']").attr("content"),
token = $("meta[name='_csrf']").attr("content");
jqXHR.setRequestHeader(header, token);
}
如果你以后要实现jqGrid数据的编辑,那么你将不得不在其他回调中做一些事情,这允许在编辑网格期间在jQuery.ajax的setRequestHeader
回调中调用beforeSend
。
以上是关于如何通过Jqgrig请求发送Spring Security csrf的主要内容,如果未能解决你的问题,请参考以下文章
如何确定向远程 Spring Boot 服务器发送请求的 URL?
如何在 Spring Boot 框架中发送 HTTP 请求?
通过 Axios 发送一个 post 请求是在 Spring-Boot 后端生成一个空的 RequestBody。在 Postman 中工作,但不能通过 Axios 发布请求