使用Java MVC,结合前端Ajax代码,传输json串。
需求:通过前端的Ajax方法,向后台POST一个JSON串。
之前使用的是GET方法,但是需要传输的数据太长,GET已经无法满足需求,因此改成POST方法。
在这种情况下,403错误的原因十有八九是csrf。

GET为什么能成功呢?因为GET方法不需要CSRF,而POST必须需要它!

在jsp页面需要加上这样一行代码:

<input type = "hidden" name = "${_csrf.parameterName}" value="${_csrf.token}" />

ajax代码如下:

let csrf = $('input[name="_csrf"]').attr('value');//读取页面的csrf值
postAjax(host + '/createfile',csrf,JSON.stringify(data));postAjax = function(url,token, encData){var headers = {"X-CSRF-TOKEN": token} //json的格式return new Promise(function(resolve,reject){$.ajax({type: "post",url: url,headers:headers,  //将csrf的值加在header里面contentType: "application/json;charset=utf-8",data: JSON.stringify(encData),dataType: "json",success: function (result) {resolve();},error: function(jqXHR, text, e){console.log('e'+e);}});
});
}

在调试过程中可能仍然会遇到403的错误,问题一般出在csrf的格式上, 可以使用console.log调试几次, 就能知道所传输的数据格式是否有问题啦~

后台对应的Java代码Controller类:

@ResponseBody
@RequestMapping(value = "/createfile")
public JSONObject createPage(HttpServletRequest request) throws AuthenticationException, IOException, ServletException {System.out.println("POST");       ......return ret;
}

这里可以写成

@RequestMapping(value = "/createfile" , method = {RequestMethod.POST})

也可以不写,如果不写后面的method,则默认同时支持GETPOST方法

注意:返回值必须是json格式, 这是因为在Ajax中的这句
contentType: "application/json;charset=utf-8"
如果返回的是string,则会报语法的错误,如:
SyntaxError: Unexpected token c in JSON at position 0(…)

如果遇到接受的值为null的问题, 可能是由于数据的格式不正确, 如果格式不是java所期待的格式,那么无法解析.

HTTP403使用Ajax的POST方法向后台传输数据出现的问题的解决方案相关推荐

  1. 原始ajax方式调用asp.net后台方法

    aspx页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Data.asp ...

  2. 查看ajax传来的数据,jQuery AJAX 方法 success()后台传来的4种数据

    1.后台返回一个页面 js代码 /**(1)用$("#content-wrapper").html(data);显示页面*/ $.ajax({ async : false, cac ...

  3. jquery中的ajax方法请求后台数据

    首先要插入jQuery.js文件,我这里用的是2.2.4版本,也可以用最新的3.1版本 案例 提前和后台沟通好对应的网址接口,我这里是用node.js写的后台,同时因为保存在本地,所以协议名和域名省略 ...

  4. jQuery AJAX 方法 success()后台传来的4种数据

    1.后台返回一个页面 js代码 /**(1)用$("#content-wrapper").html(data);显示页面*/ $.ajax({async : false,cache ...

  5. 进一步封装axios并调用其读取数据(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)

    注意!!!(修改于2020年7月18日) 在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据 报错截图如下 报错内容: {&quo ...

  6. ajax respon有数据,Ajax怎么通过response在后台传递数据?(附代码)

    这次给大家带来Ajax怎么通过response在后台传递数据?(附代码),Ajax通过response在后台传递数据的注意事项有哪些,下面就是实战案例,一起来看一下. 这是js代码:var Syste ...

  7. ASP.NET MVC如何使用Ajax的辅助方法

    前言:前面我们已经简单的介绍过了MVC如何Jquery,因为我们如果使用Ajax的话必须要了解Jquery,这篇博客我们将大致了解一下ASP.NET MVC如何使用Ajax的辅助方法,此博客是我的读书 ...

  8. js:ajax的get方法实现简单的搜索框提示

    效果演示: 一,使用nodejs搭建后台环境,通过ajax的get方法将文本框中的值,实时传输到后台进行比较,后台返回相应的结果,将结果返回到ul中 1,创建路由 app4.js /*** Creat ...

  9. ajax方法怎么用,ajax的使用方法

    后台在写代码时 一般都会用到AJAX传值的方法 了解的AJAX方法有三种样式 第一 $.ajax( { type: "POST", url: "UserList.ashx ...

最新文章

  1. HTML 5 Web Workers
  2. Python 技术篇-xlwt库不新建,直接读取已存在的excel并写入
  3. 一个QQ旋风的BUG
  4. 获取上传文件的后缀名
  5. python读取sqlserver数据库方法_SQLServer数据库之Python读取配置文件,并连接数据库SQL Server...
  6. 汇编程序基本原理知识笔记
  7. Java 9 中的 9 个新特性
  8. 宅在家里写数据库中排序和分页
  9. 美团创始人王兴说过,创业是一场九死一生的坚持
  10. 解决算法问题的思路 —— 从问题描述到数学表达
  11. 博客园北京俱乐部第二次技术活动(2009/4/4)总结
  12. 从键盘输入n个整数,求它们的最小公倍数
  13. 几种简易APP制作方式!自留!
  14. 在MacOS下为2K显示器开启HiDPI
  15. Xshell颜色及PS1
  16. K均值算法(K_means)
  17. 高德地图获取坐标距离_高德地图获取两个经纬度点间直线距离JS/PHP/SQL代码
  18. 学大伟业 Day 2 培训总结
  19. Wave VR Native SDK学习(一)
  20. 在Ubuntu中使用Tomcat的小tips_codestorm_新浪博客

热门文章

  1. Java使用第三方工具包将word转换为PDF文件
  2. Excel---条件格式与公式
  3. HDC.Cloud 2021|华为云数据使服务DAYU,加速数据价值释放
  4. iOS模仿京东商城中的选择地区样式
  5. 卸载 2345输入法 款流氓软件
  6. https证书价格多少?会影响价格的因素
  7. 2022护眼产品展,北京眼健康展,眼科医学展,近视矫正设备展
  8. 石头扫地机器人卡顿_石头扫地机器人T7系列APP有这些小技巧
  9. C语言 计算圆台的相关元素
  10. mac 电脑 ADB的安装和学习