標籤:ons UNC att col pos 使用者輸入 自己 需要 on()
前幾個月由於自己學習JAVAEE的一部分內容,於是最近準備自己寫個小項目,於是碰見了一些問題對於一個JAva菜鳥來說,我需要儲存下來
什麼問題類,就是我在註冊中加入驗證碼而且是中文,四字成語驗證碼,
首先用Java產生驗證碼和驗證碼圖片,調用驗證碼介面,把驗證碼使用session儲存在用戶端,並且發送圖片到前端展示,
然後點擊註冊,前端傳遞使用者輸入的驗證碼到後台,後台擷取使用者輸入的驗證碼和用session擷取儲存在用戶端的驗證碼對比,正確與否
可是!!!!!!!!!!!!!!!!!!!!!!!可是,可是,可是
// 儲存session代碼
request.getSession().setAttribute("code_session", word);
// 擷取session代碼
String userCode_session = (String)request.getSession().getAttribute("code_session");
我儲存了,擷取的時候擷取的是空,代碼沒毛病,對於我Java菜鳥來說得要找後台同事幫我,不過人家也鬱悶,人家一般用的架構,底層淡忘了,不過說代碼沒毛病啊
同事建議我用cookie儲存,可是cookie應該不安全吧,前端JS是可以擷取到的,不過我換是準備試試,先把功能完成
結果!!!!!!!!!!!!!!!!!!!!!!!頁面報500
原來cookie不支援中文儲存,我記得前端貌似可以儲存中文,後台居然不行,
算了,我用session儲存
然後我們列印session的ID來看
// 列印session的ID代碼
request.getSession().getId()
發現兩次ID不是一個ID,儲存的session的ID一直沒變,可是擷取的一直在變
花費三四個小時,我兩找到了問題原因,原來人家說是存在跨域問題
於是解決方案
1.前端ajax中加入跨域
$.ajax({ type: ‘POST‘, url: url, data: data, dataType:‘json‘, success: callback, error:function(e){ console.log(e) }, xhrFields: { withCredentials: true } });
2.後台代碼(本介面中加入)
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
解決了,美滋滋
Java中session儲存和擷取驗證碼擷取的id不一致問題