隨著互聯網的發展,我們越來越多的需要引用跨域的數據。而使用 JavaScript Ajax 進行跨域請求就是很常見的一種方式。下面我們來探討一下 JavaScript Ajax 跨域的應用和注意事項。
首先,我們來看一下什么是跨域請求??缬蛘埱笫且环N通過 JavaScript 在一個域名下向另外一個域名發送 HTTP 請求的技術。通俗地講,就是瀏覽器禁止了不同源(域名、協議、端口號)間的請求。比如,從 a.com 的頁面向 b.com 發送請求。
var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://www.example.com', true); xhr.send();
但是,這段代碼運行的時候會提示```跨域請求被禁止```。那么該如何處理呢?
Ajax 跨域請求最簡單的處理方式是使用 JSONP。JSONP 能夠繞開跨站點訪問的限制。首先,我們在網頁中引入一個寫好的 JavaScript 文件,這個 JavaScript 文件和當前網頁有相同的域名。
<script src="https://www.example.com/jsonp.js"></script>
在 jsonp.js 中我們使用參數的方式傳遞數據。jsonp.js 中有一個形參 callback,而實參則是我們自己定義的 JavaScript 函數名,這個函數用來處理傳回來的 json 格式數據。
function processData(data) { console.log(data); } var script = document.createElement('script'); script.src = 'https://www.example.com/jsonp.js?callback=processData'; document.body.appendChild(script);
隨著技術的發展,JSONP 的局限性逐漸顯現。而 ajax 請求 JSONP 會默認使用 get 請求方式,不夠靈活,且無法刪除請求。所以后來就出現了新的方式 CORS。那么 CORS 是什么?
CORS 跨域資源共享,是 HTTP 協議的規范,定義了瀏覽器和服務器交互的方式之一,可以讓服務器支持跨域。CORS 需要瀏覽器和服務器同時支持。只要瀏覽器支持此規范,就可以實現跨域。
var xhr = new XMLHttpRequest(); xhr.onload = function() { console.log(xhr.responseText); }; xhr.open('GET', 'https://www.example.com'); xhr.withCredentials = true; xhr.send();
使用 CORS 進行請求時,需要在后臺設置相關響應頭信息,允許相關協議、方法、頭信息,以及Cookie,在前端設置 withCredentials = true,標記請求可以包含認證信息。
總結:以上是一些簡單的關于 JavaScript Ajax 跨域的應用和注意事項,跨域請求并不難,只要我們掌握好相關技術,就能輕松處理跨域問題。