JavaWeb/ No 'Access-Control-Allow-Origin' header is present on the requested resource


轉載自:https://www.2cto.com/kf/201804/741223.html

報錯顯示No 'Access-Control-Allow-Origin' header is present on the requested resource.'Ajax跨域訪問

當使用ajax訪問遠程服務器時,請求失敗,瀏覽器報如上錯誤。這是出於安全的考慮,默認禁止跨域訪問導致的。

一、什么是跨域訪問

舉個栗子:在A網站中,我們希望使用Ajax來獲得B網站中的特定內容。如果A網站與B網站不在同一個域中,那么就出現了跨域訪問問題。你可以理解為兩個域名之間不能跨過域名來發送請求或者請求數據,否則就是不安全的。跨域訪問違反了同源策略。

總而言之,同源策略規定,瀏覽器的ajax只能訪問跟它的HTML頁面同源(相同域名或IP)的資源。

二、解決方案

常用的解決方案有兩種,可以分為客戶端解決方案和服務器端解決方案。先說服務器端解決方案:

服務器端解決方案

在服務器端的filter或者servlet里面添加

response.setHeader("Access-Control-Allow-Origin", "*");

“Access-Control-Allow-Origin”表示允許跨域訪問,“*”表示允許所有來源進行跨域訪問,這里也可以替換為特定的域名或ip。

很顯然,這種方式對非網站擁有人員來說是不能做到的。而且此種方式很容易受到CSRF攻擊

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM