跨域問題

問題描述

使用Spring Boot開發的REST API是相當容易的,一般情況下,REST API是獨立部署的,如果WebUI也進行獨立部署,那麼RESTAPI與WebUI可能在不同的域名下部署,從WebUI發送的AJAX請求去調用RESTAPI時就會遇到“跨域問題”。在瀏覽器控制檯上會報錯: “No ‘Access-Control-Allow-Origin’ header is present on the requested resource.",因爲AJAX的安全限制,它是不支持跨域的,我們需要通過技術手段來解決這個問題。

解決辦法

曾經我們可使用JSONP (JSON with Padding)來實現跨域問題,簡單來說就是,客戶端發送一個AJAX請求,並在請求參數後面添加一個callback 參數,指向-一個JS函數(稱爲callback回調函數)。服務端返回了一個JavaScript 函數,該函數將JSON數據做了一個封裝 ( Padding),就像這樣allalk…});,這樣我們只需要在客戶端上定義一個callback 回調函數,就能獲取從服務端返回的JSON數據了。JSONP看似簡單好用,實際上它也有非常明顯的限制:只支持GET請求,如果我們需要使用JSONP技術發送其他類型的請求(比如POST)就不太可能段來實現,比如iframe,但該方案過於煩瑣,多年前早已棄用。現在,我們優先選擇的是更加了。當然也可以通過其他手輕量級的CORS (Cross-Origin Resource Sharing)來實現跨域問題,它目前也加入到W3C規範中了,而且當前主流的瀏覽器都能很好地支持該規範。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章