我正在尝试通过jquery发送ajax请求。一切都没关系,除了网址。它应该是http://localhost:8080/register,但是http://localhost:8080/login所以它是当前页面的网址。此外,当我调试应用程序时,我可以看到此请求转到带有“/ login”值的控制器方法。我不知道为什么。这是ajax方法的代码:
$("#my-signin2").on("click", function(){
$.ajax({
url: 'http://localhost:8080/register',
type: 'post',
success: function (data) {
console.info(data);
}
});
});
还有控制器方法:
@RequestMapping(value = "/login")
public String login(){
return Links.LOGIN.getUrl();
}
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(){
return Links.HOME.getUrl();
}
此外,我正在使用spring security及其处理csrf令牌的代码:
var csrfHeader = $("meta[name='_csrf_header']").attr("content");
var csrfToken = $("meta[name='_csrf']").attr("content");
$(document).ajaxSend(function(e, xhr, options) {
xhr.setRequestHeader(csrfHeader, csrfToken);
});
我从服务员那里得到了正确答案,但是从登录方式中得到了答案。
更新:
Spring安全性将所有未经授权的请求重定向到登录页面,因此请求正常。谢谢你的帮助!
答案 0 :(得分:3)
您应首先使用e.preventDefault()
阻止默认操作,然后您可以发送自定义ajax请求,例如:
$("#my-signin2").on("click", function(e){
e.preventDefault(); //Prevent the page from refreshing
....
});
答案 1 :(得分:2)
#my-signin2
必须包含属性type="button"
因为你没有设置type
。默认为submit