解決Ajax與Spring Boot跨域通訊問題

2021-08-16 18:01:48 字數 1189 閱讀 5962

在做畢業設計過程中,需要將前後端完全分離,在這裡就涉及到了前後端跨域訪問的問題,在前端使用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...