欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

JavaScript中Jsonp的原理

趙冰雪1年前9瀏覽0評論

JavaScript中Jsonp的原理是如何實現JSON跨域訪問的一個技術,它通過利用script標簽中可以跨域訪問資源的特性,來實現JSON數據的跨域請求和響應。

舉個例子來說明Jsonp的使用場景。假設有一個頁面www.a.com,它想要訪問www.b.com的JSON數據,但是由于瀏覽器的同源策略,它們處于不同的域名下,無法直接訪問。這時候,可以通過Jsonp來解決跨域問題。

function jsonp(url, callback) {
const script = document.createElement('script');
script.src = url + '?callback=' + callback;
document.body.appendChild(script);
}
jsonp('http://www.b.com/data.json', 'dataHandler');
function dataHandler(data) {
console.log(data);
}

上面的代碼中,我們通過動態創建script標簽來加載www.b.com中的JSON數據,并傳遞一個回調函數dataHandler作為參數。在www.b.com中,我們需要將JSON數據放在回調函數的參數中,以便被返回給www.a.com。

var data = {"name": "張三", "age": 18};
var callback = req.query.callback;
res.send(callback + '(' + JSON.stringify(data) + ')');

在www.b.com的服務器端,我們需要將JSON數據包裹在回調函數中返回給www.a.com,以便在www.a.com中被dataHandler回調函數所接收。

Jsonp的原理是什么呢?它利用了script標簽的src屬性是可以跨域請求資源的特性。Jsonp的具體實現步驟如下:

  1. 在www.a.com中定義一個回調函數dataHandler,該函數用于處理www.b.com中返回的JSON數據。
  2. 通過動態創建script標簽,將www.b.com中的JSON數據地址拼接回調函數的名稱作為參數,作為script標簽的src屬性。
  3. 在www.b.com中,將JSON數據包裹在回調函數中返回給www.a.com。
  4. 當www.a.com中script標簽的src屬性所請求的資源返回時,dataHandler回調函數被調用,從而將www.b.com中返回的JSON數據作為參數傳入該函數中。
  5. www.a.com中的dataHandler回調函數就可以處理www.b.com中返回的JSON數據了。

Jsonp的優缺點如下:

  • 優點:能夠實現跨域請求JSON數據,適用于一些不需要高安全的場景,例如天氣預報、股票行情等。
  • 缺點:由于Jsonp是利用script標簽的src屬性來請求資源的,因此回調函數必須定義在全局作用域中,造成了全局變量的污染。同時,由于Jsonp只支持GET方法的請求,所以無法使用POST方法傳遞參數,限制了使用場景。