jsonp的介紹及使用


Jsonp

今天寫爬蟲抓取上海科創板數據時發現其接口是通過Jsonp來獲取的,於是對此進行了下了解。

什么是Jsonp

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,而JSONP(JSON with Padding)則是JSON 的一種“使用模式”,通過這種模式可以實現數據的跨域獲取。

Jsonp跨域的原理

在同源策略下,在某個服務器下的頁面是無法獲取到該服務器以外的數據的,但img、iframe、script等標簽是個例外,這些標簽可以通過src屬性請求到其他服務器上的數據。利用script標簽的開放策略,我們可以實現跨域請求數據,當然,也需要服務端的配合。當我們正常地請求一個JSON數據的時候,服務端返回的是一串JSON類型的數據,而我們使用JSONP模式來請求數據的時候,服務端返回的是一段可執行的JavaScript代碼。

實例

我們要跨域請求某個服務器上的數據:

{ "name":"Bill Gates", "age":62, "city":"Seattle" }

為了方便舉例實現,我在可用的服務器上放置了一個靜態文件,其內容為:

foo({ "name":"Bill Gates", "age":62, "city":"Seattle" });

然后,我寫了一個簡單的html進行測試,使用ajax 獲取jsonp數據實現數據的跨域請求:

<html>
<head>
	<script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script>
</head>
<div>
	<button onclick="self_test()">test</button>
</div>

<script>
	function foo(data) {
		console.log(data)
	}

	function self_test() {
		$.ajax({
			type: "get",
			url: 'http://d.epmap.org/static/test.txt?callback=?',
			dataType: "jsonp",
			success: function(data) {
			}
		})
	}
</script>
</html>

打開測試html頁面,打開調試工具,然后點擊test按鈕,可以看到如下結果:


參考:jquery ajax jsonp
github jsonp的介紹及使用


免責聲明!

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



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