重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
本篇內容介紹了“如何理解ajax跨域請求”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網站空間、營銷軟件、網站建設、麥積網站維護、網站推廣。
同源策略限制
同源策略阻止從一個域上加載的腳本獲取或操作另一個域上的文檔屬性。也就是說,受到請求的 URL 的域必須與當前 Web 頁面的域相同。這意味著瀏覽器隔離來自不同源的內容,以防止它們之間的操作。這個瀏覽器策略很舊,從 Netscape Navigator 2.0 版本開始就存在。——摘自developerWorks
所謂同源是指,域名,協議,端口相同。
平地一聲吼
本文講解的是怎么利用ajax實現跨域請求,那么知道“同源策略”,就可以解決很多疑問:“為毛我的ajax加載不了數據!”“為毛瀏覽器控制臺會對我如此漂亮的代碼報錯!”
例子1
先上一個錯誤示范
客戶端代碼:
復制代碼 代碼如下:
服務端PHP腳本代碼:
復制代碼 代碼如下:
// ajax.php
header('Content-type: application/json');
echo json_encode(array('website'=>'hcoding'));
?>
firefox下的錯誤提示:
根據同源策略的概念,localhost和172.22.22.120是出于不同的域名下的,所以跨域請求理所當然地被瀏覽器拒絕了。
JSONP
JSONP(JSON with Padding)是資料格式 JSON 的一種“使用模式”,可以讓網頁從別的網域要資料。另一個解決這個問題的新方法是跨來源資源共享。由于同源策略,一般來說位于 server1.example.com 的網頁無法與不是 server1.example.com 的服務器溝通,而 HTML 的
服務端PHP腳本代碼:
復制代碼 代碼如下:
$cb = htmlspecialchars($_GET['callback']); // 注意了,這里要做好過濾,防止xss攻擊
echo $cb,'(',json_encode(array('website'=>'hcoding')),')'; // 返回客戶端的數據為:cb({"name":"hcoding"}) 這是一段js代碼
?>
瀏覽器會發生什么事呢,我就不說了,當然是cb方法被調用啦:
所以,再說jsonp的概念,利用
服務端PHP腳本代碼:
復制代碼 代碼如下:
$cb = htmlspecialchars($_GET['callback']); // 注意了,這里要做好過濾,防止xss攻擊
echo $cb,'(',json_encode(array('website'=>'hcoding')),')'; // 返回客戶端的數據,這是一段js代碼
?>
$.getJSON簡單易用,但就是不能指定回調函數。
例子4
客戶端代碼:
復制代碼 代碼如下:
服務端PHP腳本代碼和例子3的相同。
“如何理解ajax跨域請求”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注創新互聯網站,小編將為大家輸出更多高質量的實用文章!