【问题标题】:POSTing from jQuery to MVC Spring Server responses HTTP 403 Forbidden从 jQuery 发布到 MVC Spring Server 响应 HTTP 403 Forbidden
【发布时间】:2014-11-21 12:58:10
【问题描述】:

我正在尝试使用 jQuery 更新字符串数组。该服务器是一个启动 Spring MVC 服务器。当我进行 POST 时,服务器的响应是 HTTP 403 Forbidden

弹簧控制器

  @RequestMapping(value="getlistmap", method = RequestMethod.POST)
    public @ResponseBody String getListMapfromOneProject(HttpServletResponse response, Principal p,@RequestBody String respostas) throws IOException {
    System.out.println("A AJAX call has been detected!");
    return "ok!";
}

POST代码:

var respostas=["hello","hi","bye"];
  var urlprova = 'getlistmap';
  $.ajax({
    type: 'POST',
    url: urlprova,
    dataType: 'json',
    data: JSON.stringify(respostas),
    success: function (data) {
        alert("updated successfully");
      },
    error: function (xhr, ajaxOptions, error) {
        alert(err.status);
        alert('Cannot update, ' + err.responseText);
    }

});

Console 来自服务器(URL 和方法 Controller 似乎映射正确):

2014-11-20 18:44:53.427 INFO 6724 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping:将 URL 路径 [/] 映射到 [class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler] 类型的处理程序上2014-11-20 18:44:53.466 INFO 6724 --- [main] s.w.s.m.m.a.RequestMappingHandlerMapping:映射“{[/login],methods=[GET],params=[],headers=[],consumes=[],生产=[],custom=[]}" 到公共 org.springframework.web.servlet.ModelAndView palmaslab.mapas.controller.myController.login() 2014-11-20 18:44:53.466 INFO 6724 -- - [main] s.w.s.m.m.a.RequestMappingHandlerMapping : 将“{[/getlistmap],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}”映射到公共 java .lang.String palmaslab.mapas.controller.myController.getListMapfromOneProject(javax.servlet.http.HttpServletResponse,java.security.Principal,java.lang.String) 抛出 java.io.IOException 2014-11-20 18 :44:53.467 INFO 6724 --- [主] s.w.s.m.m.a.RequestMappingHandlerMapping:映射“{[/ addProjectPostoSaude],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" 到公共 org.springframework.web.servlet.ModelAndView palmaslab.mapas。控制器.myController.addProject()

【问题讨论】:

  • 你在使用 Spring Security 吗?如果是这样,请参考我的answer

标签: java jquery spring post httpresponse


【解决方案1】:

看起来您的 ajax 帖子确实包含 sessionId 或用户凭据。 - 当您使用 Spring Security 时,您需要将它们与每个请求一起发送。

【讨论】:

  • 对不起,我现在正在学习 jquery,请您解释一下我必须如何发送用户凭据?谢谢
  • 我如何从之前的 getJSON 中捕获 Cookie?
  • 首先检查您的无 JSON 请求是否具有该 cookie。 - 而且我没有足够的 Jquery 知识来回答这个问题 - 我发布了这个答案,因为我知道 Spring Security 是如何工作的,而且我注意到您的请求不包含任何 jsession id
【解决方案2】:

总体上看起来合法,请尝试以下方法,其中之一可能会解决您的问题:

  • 在您的请求映射值中添加斜线: @RequestMapping(value="/getlistmap"...
  • 在您的 ajax 调用中添加:contentType: 'application/json'
  • 将请求映射中的标头描述为:headers = {"Content-type=application/json"}

【讨论】:

    猜你喜欢
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多