在做畢業設計過程中,需要將前後端完全分離,在這裡就涉及到了前後端跨域訪問的問題,在前端使用ajax與spring boot後台進行通訊。通過查詢其他部落格,我發現了下面這些方法:
1. 在html檔案中新增下面這句話
content="post,get">不過新增了這句話之後,在執行時控制台丟擲了這個警告
已攔截跨源請求:同源策略禁止讀取位於 http://***:8080/login 的遠端資源。(原因:cors 頭缺少 'access-control-allow-origin')。
.
所以好像這個方法並沒有能夠起到什麼作用,在返回資料的時候仍然沒有能夠獲取到。
2. 使用jsonp進行資料傳輸。在ajax進行資料傳遞時,將datatype
型別設定為jsonp
。不過這種方法也有一些不便的方式:
- jsonp只能使用get方法進行 原因戳 jsonp為什麼不支援post請求
- 使用jsonp時,還需要在ajax中新增jsonpcallback: "getresult"
,並且要在返回的json格式的中新增上這個callback的名稱。例如:
return "getresult()";
public
class
corsconfig
/*** addressing cross-domain access issues.
*@return
*/@bean
public corsfilter corsfilter()
注意在導包的時候,要選擇org.springframework.web.cors
包。
或者你也可以選擇更方便的方法,直接在controller中新增@crossorigin
註解也可以。
需要注意的是,ajax傳入的值是json,那麼需要確保返回值也是json格式,不然也會報出各種莫名其妙的錯誤
順便說乙個spring boot別的坑
Ajax頁面快取分析與解決
一 什麼是ajax快取原理?ajax在傳送的資料成功後,會把請求的url和返回的響應結果儲存在快取內,當下一次呼叫ajax傳送相同的請求時,它會直接從快取中把資料取出來,這是為了提高頁面的響應速度和使用者體驗。當前這要求兩次請求url完全相同,包括引數。這個時候,瀏覽器就不會與伺服器互動。二 aja...
解決ajax亂碼心得
1 如果伺服器端的頁面編碼是utf 8,那麼客戶端就直接用temp1 xmlhttp.responsetext接收,就不會產生亂碼,因為js預設情況下是讀utf 8編碼的。2 如果伺服器端的頁面編碼是gb2312,那麼客戶端就要先用temp1 xmlhttp.responsebody接收服務端返回的...
ajax亂碼解決記錄
做j2ee web專案,很多時候都直接在jsp頁面設定編碼為 gbk。而在表單中提交資料到後台服務時遇到中文亂碼,我們也會輕車熟路的在web.xml中增加編碼過濾器 set character encoding org.springframework.web.filter.characterenco...