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

2022-07-17 04:27:13 字數 984 閱讀 5793

瀏覽器不允許ajax跨站請求,所以存在ajax跨域問題,目前主要有兩種辦法解決。

1、在請求頁面上使用access-control-allow-origin標頭。

header('access-control-allow-origin:*')

header('access-control-allow-origin:')

所以,伺服器寫法:

header('access-control-allow-origin:*');

die( json_encode(array('msg'=>'msg....')) );

ajax寫法和平常一樣:

測試

2、使用jsonp跨域請求。

伺服器:

$data = json_encode(array('msg'=>'msg....'));

die( $_request['function_name_index'].'('.$data.')' );

ajax請求:

測試

在ajax請求中,使用jsonp資料格式,所以講datatype引數設定為jsonp,平常,還加到了jsonp和jsonpcallback兩個引數,結合**,不難看出這兩個引數作用:

jsonp的作用是設定伺服器獲取**函式名稱引數的下標引數,jsonpcallback的作用就是設定**函式,相當於input標籤中name和value,jsonp對應name,value對應jsonpcallback。

更多jsonp請求可以參考:

有很詳細的原理介紹。

當然,對已一些簡單的get請求,平不需要**函式處理,可以使用script、img、iframe 等html標籤設定的src屬性產生get請求,這裡不在討論情況了。

AJAX跨域問題解決方法

呼叫方解決跨域的方法只有一種,那就是隱藏跨域。何為隱藏跨域?隱藏跨域的核心思路是通過反向 隱藏跨域以欺騙瀏覽器 什麼是反向 反向 是指通過中間伺服器使得訪問同乙個網域名稱的兩個不同url最終會去往兩個不同的伺服器 一 反向 nginx配置 在之前的被呼叫方解決跨域中,訪問的請求是絕對位址,瀏覽器可以...

uni app兩種方法解決跨域問題

module.exports 第二種 在manifest.json的 檢視中 根節點中 即 中 做如下宣告 h5 最後在你統一的網路請求中做如下判斷即可 var base url http 9088 不是h5預設這個位址 ifdef h5 base url dpc h5下將位址修改為 dpc end...

兩種簡單的跨域方法

ajax不能跨域,比如您是www.baidu.com 您就不能請求 www.163.com 的檔案。但您可以請求 這是因為安全原因,對於任何後台語言來說 伺服器程式來說,所有的xhr 型別的請求,如果來自其他的伺服器,將不予應答。一 使用jsonp jsonp就像是json padding一樣 pa...