兩種簡單的跨域方法

2022-08-15 03:03:23 字數 2081 閱讀 3999

ajax不能跨域,比如您是www.baidu.com

,您就不能請求

www.163.com

的檔案。但您可以請求

。這是因為安全原因,對於任何後台語言來說、伺服器程式來說,所有的xhr

型別的請求,如果來自其他的伺服器,將不予應答。

一、使用jsonp

jsonp就像是json+padding一樣(padding這裡我們理解為呼叫函式時的填充)。

綠色部分是json

,外面的

fun();

是函式的呼叫,是

padding

補充部分。

jsonp的原理很簡單,就是把定義寫在了html原始檔裡面,而將呼叫放在script標籤引用的檔案裡面,由於script標籤可以跨檔案使用,這樣就實現了跨域,引用的檔案可以有各種格式php 、js、txt等。

下面舉個例子:

jsonp.txt裡面的內容如下:

//呼叫函式

fun(,

, ]});

執行結果:

由於這樣使用起來不方便,我們可以將它封裝成乙個實用輪子:

jquery已經有封裝好的api可以直接使用:名稱是ajax()

可以檢視jquery手冊,參考如下

二、使用php偷資料

幾乎每種後台語言都可以實現該功能,以下是php的示例: 

<?php 

header("content-type:text/html;charset=utf-8");

$a = file_get_contents("**");

print_r($a);

?>

其中,header是設定返回到瀏覽器中的標頭檔案的字符集和檔案型別

三、補充一點:

來自:darren_聶微東 - 關注前端技術的博文:

ajax post&跨域 解決方案 - cors

利用 cors, 只需新增乙個標頭,就可以允許來自  的請求,下圖是我在php中的 hander() 設定,「*」號表示允許任何域向我們的服務端提交請求

也可以設定指定的網域名稱,如網域名稱  ,那麼就允許來自這個網域名稱的請求

當前我設定的header為「*」,任意乙個請求過來之後服務端我們都可以進行處理&響應,那麼在除錯工具中可以看到其頭資訊設定,其中見紅框中有一項資訊是「access-control-allow-origin:*」,表示我們已經啟用cors,如下圖。

ps:由於demo都在我廠的兩台測試機間完成,外網也不能訪問,所以在這就不提供demo了,見諒

簡單的乙個header設定,乙個支援跨域&post請求的server就完成了:)

當然,如果沒有開啟cors必定失敗的啦,如下圖:

Ajax跨域問題的兩種解決方法

瀏覽器不允許ajax跨站請求,所以存在ajax跨域問題,目前主要有兩種辦法解決。1 在請求頁面上使用access control allow origin標頭。header access control allow origin header access control allow origin ...

SpringMVC解決跨域的兩種方案

跨域,即跨站http請求 cross site http request 指發起請求的資源所在域不同於請求指向資源所在域的http請求。當使用前後端分離,後端主導的開發方式進行前後端協作開發時,常常有如下情景 後端開發完畢在伺服器上進行部署並給前端api文件。前端在本地進行開發並向遠端伺服器上部署的...

SpringMVC解決跨域的兩種方案

跨域,即跨站http請求 cross site http request 指發起請求的資源所在域不同於請求指向資源所在域的http請求。當使用前後端分離,後端主導的開發方式進行前後端協作開發時,常常有如下情景 後端開發完畢在伺服器上進行部署並給前端api文件。前端在本地進行開發並向遠端伺服器上部署的...