[置頂] 遭遇jsonp同域下變作post請求的坑

今天遷移一個站點時遇到一個坑爹問題,同一個jsonp接口在跨域時都能調用成功,但是在同域下調用雖然成功,但是數據卻有問題. 此處貼出我的後端代碼片段

$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));

 貼出我前端代碼片段:

$.ajax({
                    url: jsonp_login_url,
                    data: data,
                    type: 'POST',// 此處修改成 GET 就沒有問題
                    dataType: 'jsonp'
                }).success(function(res)

 

注意看 我標識出的代碼,

 

當使用 post 類型時,雖然提交的 dataType 設置成 jsonp 但是在後端 $_GET 是取不到參數的,

 

按我的理解, jsonp 應該就是 動態創建了一個 script 標籤而已啊,爲什麼會有這個問題呢?

 

我搜了下一些資料,沒有找到原因在哪? 不過找到了一種新的跨域解決方案: CORS

http://www.360doc.com/content/14/0106/11/15643_343005039.shtml

 

倒是蠻有意思的一個跨域方案...

 

有人知道的給我個回覆

 

 我好奇的是 發出 jsonp 請求時正常來說 應該是創建 script標籤 然後get 一個url 地址纔對啊


但是 同域下 jquery 創建script 標籤時卻可以發出 post 請求
 
----------------------------------------------------------------------------------------------------------------
答案已經找到:
寫道
同域下 jquery jsonp post的問題我找到答案了 jsonp支持post,那麼內部機制便不是使用inject script標籤的機制。而是隱藏的iframe+form表單提交。此時server端就要去讀取form數據,而非get
 
發佈了635 篇原創文章 · 獲贊 24 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章