mvc中使用jsonp進行跨域請求詳細說明

2022-03-03 19:23:04 字數 1157 閱讀 3523

在web開發中,如果你要在不同域下進行資料非同步請求,會出現乙個no 『access-control-allow-origin』 header is present on the requested resource.」的錯誤提示。

該提示資訊說明,跨域請求是違反了「同源策略」的。

但是在開發中又難免會遇到跨域請求的需求,所以前輩們也是留下了跨域請求資料的方法jsonp跨域請求。

我們以最為典型的jquery做例子,後台用的asp.net mvc。

我們先構造乙個action的返回物件,用於返回jsonp資料

#region jsonresult

public

class jsonpresult: actionresult

public

string callbackname

public jsonpresult(t obj, string

callback)

public

override

void

executeresult(controllercontext context)

}#endregion

寫乙個供前台呼叫的action ,callback引數是必須的乙個引數

public actionresult ajaxjsonp(string s, string f,string

callback)

, callback);

}

然後我們在前台用ajax跨域呼叫該方法(如果是在本地測試,在不同的埠號下即可)

$.ajax(,

cache:

false

, error:

function

() ,

datatype: "jsonp",

jsonp: 'callback',

success:

function

(result)

}});

類似於使用js建立乙個script元素,引用的位址就是我們請求的位址。

callback(data);

這就相當於執行了乙個函式:callback,並把data傳入了這個函式,所以我們就拿到了data;

JSONP跨域請求

看到jsonp我們會很自然的想到json,但它們卻有很大的不同,json是一種輕量級的資料交換格式,而jsonp可以說是一種非官方的資料互動協議。jsonp json with padding 利用jsonp可以從別的網域名稱下獲取資料,即跨域獲取資料。由於同源策略不允許xmlhttprequest...

jsonp簡單跨域

在web開發的時候難免會遇到跨域求情資料的問題,此時使用jsonp是比較簡便的。a.com網域名稱下的js,是無法訪問網域名稱為b.com下的js的,會報跨域的錯誤 所以你可以動態建立乙個標籤,把他的src屬性設定成你要請求的伺服器的url,如 就等於是使用去向伺服器請求,但是這個是時候伺服器不能直...

jsonp跨域原理

jsonp跨域請求是借助於表單元素的 src 屬性的 跨域 實現的,具體實現如下 1 html頁面 2 服務端 restcontroller public class jsonpcontroller return callback jsonp和ajax並無關係,只是借助了src屬性的 跨域 特性來實...