日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP403使用Ajax的POST方法向后台传输数据出现的问题的解决方案 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

使用Java MVC,結(jié)合前端Ajax代碼,傳輸json串。
需求:通過(guò)前端的Ajax方法,向后臺(tái)POST一個(gè)JSON串。
之前使用的是GET方法,但是需要傳輸?shù)臄?shù)據(jù)太長(zhǎng),GET已經(jīng)無(wú)法滿足需求,因此改成POST方法。
在這種情況下,403錯(cuò)誤的原因十有八九是csrf。

GET為什么能成功呢?因?yàn)镚ET方法不需要CSRF,而POST必須需要它!

在jsp頁(yè)面需要加上這樣一行代碼:

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

ajax代碼如下:

let csrf = $('input[name="_csrf"]').attr('value');//讀取頁(yè)面的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);}}); }); }

在調(diào)試過(guò)程中可能仍然會(huì)遇到403的錯(cuò)誤,問(wèn)題一般出在csrf的格式上, 可以使用console.log調(diào)試幾次, 就能知道所傳輸?shù)臄?shù)據(jù)格式是否有問(wèn)題啦~

后臺(tái)對(duì)應(yīng)的Java代碼Controller類:

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

這里可以寫(xiě)成

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

也可以不寫(xiě),如果不寫(xiě)后面的method,則默認(rèn)同時(shí)支持GETPOST方法

注意:返回值必須是json格式, 這是因?yàn)樵贏jax中的這句
contentType: "application/json;charset=utf-8"
如果返回的是string,則會(huì)報(bào)語(yǔ)法的錯(cuò)誤,如:
SyntaxError: Unexpected token c in JSON at position 0(…)

如果遇到接受的值為null的問(wèn)題, 可能是由于數(shù)據(jù)的格式不正確, 如果格式不是java所期待的格式,那么無(wú)法解析.

總結(jié)

以上是生活随笔為你收集整理的HTTP403使用Ajax的POST方法向后台传输数据出现的问题的解决方案的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。