自己挖的坑,含淚跳進去也要填平。 ---題記
1.問題:
a. 在前端使用JSON.stringify(json)轉化數組對象為字符串,然后傳給后台;
var dateArray = new Array(); //fill array params.dateArray = JSON.stringify(dateArray); //ajax.post();
b. 后端java使用 net.sf.json.JSONArray.fromObject(params);方式解析;
JSONArray jsonArrays = JSONArray.fromObject(params.get("dateArray"));
c:報如下錯誤:
Unquotted string '"2016-07-19"'
2.分析:
2.1 一看是錯誤為字符串沒有寫引號;
2.2 但是此字符串命名是有引號的呀;
2.3 難道是JSON.stringify();轉化使用的編碼方式不正確?console.log(轉化后字符串),沒錯;
2.4 難道是傳到后台中傳輸的編碼方式不正確?查看web.xml,所有請求的編碼方式為UTF-8,沒錯;
3.頓悟:
想起了系統做了防xss攻擊優化,將一些可能造成攻擊的字段在過濾器中轉為了全角字符,查看過濾器,bingo!!!
4.解決方案:
將雙引號轉化的為全角的代碼注釋;
5.感想:
防xss攻擊方式需要改善