1. 程式人生 > >深入剖析jsonp跨域原理

深入剖析jsonp跨域原理

專案中遇到一個jsonp跨域的問題,於是仔細的研究了一番jsonp跨域的原理。搞明白了一些以前不是很懂的地方,比如:

1)jsonp跨域只能是get請求,而不能是post請求;

2)jsonp跨域的原理到底是什麼;

3)除了jsonp跨域之外還有那些方法繞過“同源策略”,實現跨域訪問;

4)jsonp和ajax,或者說jsonp和XMLHttpRequest是什麼關係;

等等。

1.同源策略

說到跨域,首先要明白“同源策略”。同源是指:js指令碼只能訪問或者請求相同協議,相同domain(網址/ip),相同埠的頁面。

我們知道,js指令碼可以訪問所在頁面的所有元素。通過ajax技術,js也可以訪問同一協議,同一個domain(ip),同一埠的伺服器上的其他頁面,請求到瀏覽器端之後,利用js就可以進行任意的訪問。但是對於協議不同, 或者domain不同或者埠不同的伺服器上的頁面就無能為力了,完全不能進行請求。

下面在本地搭建兩個tomcat,分別將埠設為8080,和8888,進行相關實驗。顯然他們的埠是不同的。演示如下:

http://localhost:8888/html4/ajax.html的程式碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 <! doctype  html> < html > < head >      < meta  charset="utf-8">
     < meta  name="keywords" content="jsonp">      < meta  name="description" content="jsonp">      < title >jsonp</ title >      < style  type="text/css">         

相關推薦

深入剖析jsonp原理

專案中遇到一個jsonp跨域的問題,於是仔細的研究了一番jsonp跨域的原理。搞明白了一些以前不是很懂的地方,比如: 1)jsonp跨域只能是get請求,而不能是post請求; 2)jsonp跨域的原理到底是什麼; 3)除了jsonp跨域之外還有那些方法繞過“同源策略”,實現跨域

JSONP原理及示例

同源策略下,伺服器不能請求該伺服器以外的資源,及不能跨域請求。何為跨域,簡單說就是協議+主機名+埠號(存在的話)三者之一不同就可稱之為跨域。如: 1.http: //www.test.com 和 https: //www.test.com 之間協議不同,

JSONP原理和jQuery.getJSON用法

JSONP是一個非官方的協議,它允許在伺服器端整合Script tags返回至客戶端,通過javascript callback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。JSON系統開發方法是一種典型的面向資料結構的分析和設計方法,以活動為中心,一連串的活動

ajax工作原理jsonp詳解

一、Ajax簡介 ajax = 非同步 JavaScript 和 XML。 ajax是一種在無需重新載入整個網頁的情況下,能夠更新部分網頁的技術。我們知道,傳統的網頁(不使用ajax)如果需要更新內容,必須重新載入整個網頁。Ajax的出現,使得使網可以實現非同步更新,這意味著可以在不重新載入整個網

jsonp訪問的原理及引數作用

什麼是JSONP   先說說JSONP是怎麼產生的:   1、一個眾所周知的問題,Ajax直接請求普通檔案存在跨域無許可權訪問的問題,甭管你是靜態頁面、動態網頁、web服務、WCF,只要是跨域請求,一律不準;   2、不過我們又發現,Web頁面上呼叫js檔案時則不受是否跨域的影響(不僅如此,我們還發現凡

JSONP請求原理及優缺點

三、使用jquery的jsonp如何發起跨域請求及其原理先看下準備環境:兩個埠不一樣,構成跨域請求的條件。獲取資料:獲取資料的埠為9090請求資料:請求資料的埠為80801、先看下直接發起ajax請求會怎麼樣下面是發起請求端的程式碼:<%@ page pageEncoding="utf-8" conte

ajax與jsonp的本質原理

ajax的基本概念 瞭解這個概念,首先得先知道同步互動與非同步互動 同步互動:客戶端瀏覽器給伺服器傳送一個請求,伺服器返回一個頁面,返回的頁面會把之前的頁面覆蓋掉,我們把這種互動方式稱為同步互動 非同步互動:就是可會斷瀏覽器給伺服器傳送一個請求,伺服器返回

jsonp和GET、POST的原理解析及GET和POST的區別

同源策略: 同源策略是1995年 Netscape 公司引入瀏覽器的,目前瀏覽器都是實行這個策略, 同源策略是為了保證使用者資訊的安全,防止惡意的網站竊取資料的。 同源指的是三個

JSONP原理解析---一種指令碼注入行為

JavaScript是一種在Web開發中經常使用的前端動態指令碼技術。在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。這一策略對於JavaScript程式碼能夠訪問的頁面內容做了很重要的限制,即JavaScri

JSONP原理解析

JavaScript是一種在Web開發中經常使用的前端動態指令碼技術。在JavaScript中,有一個很重要的安全性限制,被稱為“Same-Origin Policy”(同源策略)。這一策略對於JavaScript程式碼能夠訪問的頁面內容做了很重要的限制,即JavaSc

JSONP請求原理及示例

Jsonp的跨域問題,再講之前先說明一下什麼是同源策略。 來自百度的介紹 同源策略,它是由Netscape提出的一個著名的安全策略。現在所有支援JavaScript 的瀏覽器都會使用這個策略。所謂同源是指,域名,協議,埠相同。當一個瀏覽器的兩個ta

jsonp原理以及優缺點

在開發測試中,難免會在不同域下進行跨域操作,出於安全性考慮,瀏覽器中的同源策略阻止從一個域上載入的指令碼獲取或者操作 另一個域下的文件屬性,這時需要進行跨域的方式進行解決,如:使用jsonp ,iframe等 1.jsonp的原理 jsonp,即json+

深入理解前端方法和原理

前言 受瀏覽器同源策略的限制,本域的js不能操作其他域的頁面物件(比如DOM)。但在安全限制的同時也給注入iframe或是ajax應用上帶來了不少麻煩。所以我們要通過一些方法使本域的js能夠操作其他域的頁面物件或者使其他域的js能操作本域的頁面物件(iframe之間)

JsonP請求原理

數據 pad cal block 前端 fun lin gre borde 前端訪問後臺獲取數據請求一般都會存在CROS同源問題。(即 端口 域名 協議 相同才可以訪問)。 一般我們通過本地服務器代理訪問,但是這樣就會存在上述問題。 所以我們就需要不觸發CROS同源

問題解決方式(HttpClient安全 &amp; jsonp)

str 輕量 mov fontsize 使用 col utf8 des conn 1 錯誤場景 今天要把項目部署到外網的時候,出現了這種問題, 我把兩個項目放到自己本機的

flask+jsonp前後臺交互(接口初體驗)

script keys 返回 == 方法 png 前後臺 true run 1 # -*- coding: utf-8 -*- 2 from flask import Flask, jsonify 3 import psutil, time,json 4 5

問題相關知識詳解(原生js和jquery兩種方法實現jsonp

syn con 加載 developer 兩種方法 ray exe 編寫 分組 1、同源策略 同源策略(Same origin policy),它是由Netscape提出的一個著名的安全策略。同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽

JQuery+ajax+jsonp 訪問

url .text java jquery rip getjson round show ajax <html> <head> <meta http-equiv="Content-Type" content="text/html; c

node實現jsonp

text con 跨域 require test eof file jsonp跨域 data 1. 搭建node server //引入模塊 var http=require("http"); var fs=require("fs");var url = require

分享下知心天氣jsonp訪問的代碼

hmac blog ces ejs != 跨域 ucc think crypto var myWeather = (function(){ var funShun = "https://api.thinkpage.cn/v3/weather/now.js