這篇文章主要介紹使用jquery的jsonp發(fā)起跨域請求的示例分析,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
跨域的安全限制都是對瀏覽器端來說的,服務(wù)器端是不存在跨域安全限制的。
瀏覽器的同源策略限制從一個源加載的文檔或腳本與來自另一個源的資源進(jìn)行交互。
如果協(xié)議,端口和主機(jī)對于兩個頁面是相同的,則兩個頁面具有相同的源,否則就是不同源的。
如果要在js里發(fā)起跨域請求,則要進(jìn)行一些特殊處理了?;蛘?,你可以把請求發(fā)到自己的服務(wù)端,再通過后臺代碼發(fā)起請求,再將數(shù)據(jù)返回前端。
這里講下使用jquery的jsonp如何發(fā)起跨域請求及其原理。
先看下準(zhǔn)備環(huán)境:兩個端口不一樣,構(gòu)成跨域請求的條件。
獲取數(shù)據(jù):獲取數(shù)據(jù)的端口為9090
請求數(shù)據(jù):請求數(shù)據(jù)的端口為8080
1、先看下直接發(fā)起ajax請求會怎么樣
下面是發(fā)起請求端的代碼:
<%@ page pageEncoding="utf-8" contentType="text/html;charset=UTF-8" language="java" %>跨域測試
請求的結(jié)果如下圖:可以看到跨域請求因為瀏覽器的同源策略被攔截了。
2、接下來看如何發(fā)起跨域請求。解決跨域請求的方式有很多,這里只說一下jquery的jsop方式及其原理。
首先我們需要明白,在頁面上直接發(fā)起一個跨域的ajax請求是不可以的,但是,在頁面上引入不同域上的js腳本卻是可以的,就像你可以在自己的頁面上使用
標(biāo)簽來隨意顯示某個域上的圖片一樣。
比如我在8080端口的頁面上請求一個9090端口的圖片:可以看到直接通過src跨域請求是可以的。
3、那么看下如何使用