Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单的AJAX JQuery示例给出了500个内部服务器错误_Java_Jquery_Ajax_Spring_Spring Security - Fatal编程技术网

Java 简单的AJAX JQuery示例给出了500个内部服务器错误

Java 简单的AJAX JQuery示例给出了500个内部服务器错误,java,jquery,ajax,spring,spring-security,Java,Jquery,Ajax,Spring,Spring Security,嗨,我在一个SpringMVC项目中工作,当我点击表单中的按钮时,我遇到了这个错误 500 (Internal Server Error) jquery.min.js:6 x.ajaxTransport.x.support.cors.e.crossDomain.send jquery.min.js:6 x.extend.ajax AddUser:19

嗨,我在一个SpringMVC项目中工作,当我点击表单中的按钮时,我遇到了这个错误

500 (Internal Server Error)                                    jquery.min.js:6
x.ajaxTransport.x.support.cors.e.crossDomain.send  jquery.min.js:6 
x.extend.ajax                                      AddUser:19 
doAjaxPost                                         AddUser:41 
onclick
我试图做一个简单的ajaxjquery示例,将用户添加到列表中,但当我在表单中按下add按钮时会出现错误

这是我的控制器类:

@Controller
public class UserListController {

 private List<User> userList = new ArrayList<User>();

     @RequestMapping(value="AddUser",method=RequestMethod.GET)
     public String showForm(){

         return "AddUser";
     }

     @RequestMapping(value="AddUser",method=RequestMethod.POST)
     public @ResponseBody String addUser(@ModelAttribute(value="user") User user, BindingResult result ) 
     {
         String returnText;

         if(!result.hasErrors())
         {
             userList.add(user);
             returnText = "User has been added to the list. Total number of users are " + userList.size();

         }
         else
         {
             returnText = "Sorry, an error has occur. User has not been added to list.";
         }

         return returnText;
     }

     @RequestMapping(value="ShowUsers")
     public String showUsers(ModelMap model) 
     {
         model.addAttribute("Users", userList);

         return "ShowUsers";
     }
编辑:我启动一个新项目只是为了试图知道我有什么错误,我删除了我的应用程序中的SpringSecuirty,但我仍然可以找出错误

1) 实际上我并没有删除SpringSecurity,我只是启动了一个新项目来解决我的url问题

2) 我在ajax脚本中更改控制器和URL属性

新的RequestMapping控制器:

 @RequestMapping(value="AddUser",method=RequestMethod.GET)
我删除了value=“AddUser”中的“/”


我的任何控制器中都没有“/”,如果在控制器中放置“/”,我会出现相同的500内部服务器错误

这可能是因为在Java配置中默认启用了CSRF保护。在您的配置中尝试

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        // ...
        .csrf().disable();
}
让我知道这是否有效

编辑**

要在AJAX请求中包含CSRF令牌,如果您使用的是JSON,则需要将其放在http头上。示例JSP示例通常是

<html>
<head>
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
</head>

然后在javascript调用中,获取此参数并将其添加到XMLHttpRequest的头中

希望这有帮助


我把它放在我的spring安全配置类
的末尾。和().csrf().disable()我试过了,但它知道有一个404错误,这是个好消息。现在,您正在从Ajax发布带有“url:“views/AddUser”`的帖子。控制器映射在哪里?我只能在控制器中看到/AddUser。我用这个
URL:AddUser
更新了ajax脚本,在控制器中我更新了控制器的映射,从
value=“/AddUser”
value=“AddUser”
现在它给了我
500(内部服务器错误)
我相信它应该是/AddUser。现在,这是一个一般性错误,您必须查看它发布到的URL是什么,等等。但我相信您的主要问题已经解决。有点,但我不想禁用我的csrf tokken有没有其他方法可以做到这一点,而不必禁用csrf tokken
@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        // ...
        .csrf().disable();
}
<html>
<head>
<meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>
</head>