首先說一下什么是跨域?
JavaScript出於安全方面的考慮,不允許跨域調用其他頁面的對象。那什么是跨域呢,簡單地理解就是因為JavaScript同源策略的限制,a.com域名下的js無法操作b.com或是c.a.com域名下的對象。
當協議、子域名、主域名、端口號中任意一個不相同時,都算作不同域。不同域之間相互請求資源,就算作“跨域”。
例如:http://www.abc.com/index.html 請求 http://www.efg.com/service.php。
有一點必須要注意:跨域並不是請求發不出去,請求能發出去,服務端能收到請求並正常返回結果,只是結果被瀏覽器攔截了。之所以會跨域,是因為受到了同源策略的限制,同源策略要求源相同才能正常進行通信,即協議、域名、端口號都完全一致。
在這之前小冷自己寫了個簡單的前端頁面(注意此頁面使用vue),這里涉及的是前后端分離的操作,小冷使用vue中的ajax直接請求的后台的服務器,當然后台可以用任何語言實現數據傳輸(可使用java,python,node,php,c++,c#等),小冷使用的是java語言編寫的后台的代碼,此時就涉及到了跨域。
-
首先是前台數據可以傳到
-
-
然而后台卻無法相應回前台頁面(這里頁面會拋一個異常,說太安全,無法獲取請求后響應的數據--暫時就這樣理解吧嘻嘻)
- 請求代碼
-
java解決方法:
此處java使用的springboot框架,解決中使用的一個注解
@CrossOrigin(origins = "*", maxAge = 3600) //* 可以改成ip地址
加如此注解后
-
獲取到響應的數據,此處注解可以配置全局,亦可以配置方法局部小冷配置為全局
此處基本跨域問題基本解決!
前端vue跨域的解決方法:
-
大家可以關注我的微信公眾號”秦川以北“,里面還有好多實用的技術分享!
-