使用AJAX 從不同域請求資料
儘管存在與跨域Ajax 呼叫相關的安全性問題,但在從不同域檢索資料時仍會出現以下情況:外部網站是必要的。本問題研究了在考慮固有限制的情況下實現此類資料交換的可能性。
跨域 Ajax 呼叫的主要障礙是瀏覽器的同源策略 (SOP)。此政策禁止對不同網域上的 URL 進行直接 Ajax 請求。如問題所示,嘗試對「http://www.google.com」進行 Ajax 呼叫將被瀏覽器阻止。
雖然將 dataType 設定為「jsonp」允許跨域調用,它帶來了新的挑戰。來自外部網站的回應將不是 JSON 格式,導致嘗試解析時出現語法錯誤。
解決方案:利用伺服器端語言作為代理
自由於SOP,不允許直接Ajax調用,解決方案在於使用伺服器端語言作為代理。這種語言可以從所需的外部網站獲取數據,然後將其返回到客戶端的瀏覽器。
提供的程式碼片段中說明了實現此目的的一種方法。程式碼的 jQuery 部分會向名為「proxy.php」的 PHP 腳本發出 Ajax 請求,並將外部網站的位址作為參數傳遞。收到外部網站的回應後,PHP 腳本 (proxy.php) 只是回顯其內容。這樣,瀏覽器就可以在不違反SOP的情況下接收來自外部網站的資料。
需要注意的是,這種方法涉及將資料(在本例中為外部網站的位址)發送到伺服器-邊腳本,因此考慮安全和資料隱私方面的影響至關重要。
以上是考慮同源策略,如何使用 AJAX 從不同領域檢索資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!