最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C#后臺(tái)調(diào)用跨域MVC服務(wù)及帶Cookie驗(yàn)證的實(shí)現(xiàn)

 更新時(shí)間:2013年04月28日 11:09:52   作者:  
本篇文章介紹了,基于C#后臺(tái)調(diào)用跨域MVC服務(wù)及帶Cookie驗(yàn)證的實(shí)現(xiàn)。需要的朋友參考下

背景
隨著富客戶端框架的盛行,以及眾多優(yōu)秀的前端js框架,很多情況我們會(huì)遇到跨域的問(wèn)題,而js的ajax請(qǐng)求是不允許直接跨域訪問(wèn)的,當(dāng)然你會(huì)說(shuō)可以用JSONP等,但是由于代碼潔癖,不想在前端和后臺(tái)添加callback,而且很多情況你是無(wú)法控制的,需要牽連考慮太多的情況。

所以我直接繞過(guò)了,每個(gè)前端應(yīng)用,自帶一個(gè)通用后端服務(wù)代理,該服務(wù)解決跨域問(wèn)題,自動(dòng)代理幫前臺(tái)獲取跨域的數(shù)據(jù)。

如何算跨域
雖然是個(gè)老問(wèn)題,但是還是要提醒注意下兩點(diǎn):同IP,不同端口,數(shù)據(jù)訪問(wèn)是跨域的,但是Cookie訪問(wèn)是可以的(這個(gè)讓我很難理解)

解決,源碼

復(fù)制代碼 代碼如下:

    CookieContainer cookieContainer = new CookieContainer();

     [HttpPost]
        public string CommonPost(string url)
        {
            log.Info(CookieHelper.GetCookie("ITDC_UserName") + "進(jìn)入方法CommonPost Url=" + url);
            Uri address = new Uri(System.Configuration.ConfigurationManager.AppSettings["RESTfulAPI"].ToString() + url);
            HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
       //遠(yuǎn)程服務(wù),需要加入cookie驗(yàn)證
            cookieContainer.Add(address, GetCookie("ITDC_UserName"));
            cookieContainer.Add(address, GetCookie("ITDC_UserRole"));
            request.CookieContainer = cookieContainer;
            StringBuilder data = new StringBuilder();
            for (int i = 0; i < Request.QueryString.Count; i++)
            {
                if (Request.QueryString.Keys[i].ToString() == "url") continue;
                data.Append("&" + Request.QueryString.Keys[i].ToString() + "=" + Request.QueryString[i].ToString());
            }
            // Create a byte array of the data we want to send
            byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString().TrimStart('&'));
            // Set the content length in the request headers
            request.ContentLength = byteData.Length;
            // Write data 
            using (Stream postStream = request.GetRequestStream())
            {
                postStream.Write(byteData, 0, byteData.Length);
            } 
            string result = "";
            using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            {
                StreamReader reader = new StreamReader(response.GetResponseStream());
                result = reader.ReadToEnd();
            }
            log.Info(CookieHelper.GetCookie("ITDC_UserName") + " 執(zhí)行完成 CommonPost Url=" + url);
            return (result);
        }


前臺(tái)調(diào)用
復(fù)制代碼 代碼如下:

Ext.Ajax.request({url: APIUrl + '/Nebula/CommonPost?url=/Nebula/PostComment/&KlId=1&Msg=ok&Author=admin&Title=文章標(biāo)題',
                  method: "POST",
                  success: function (response) {
                              Ext.Viewport.unmask();
                              var obj = Ext.decode(response.responseText);
                              Ext.Msg.alert("提示", obj.Msg, Ext.emptyFn);
                           },
                  failure: function (response) {
                              Ext.Viewport.unmask();
                              Ext.Msg.alert("提示", "操作失敗,請(qǐng)檢查網(wǎng)絡(luò)!", Ext.emptyFn);
                           }
});

相關(guān)文章

  • 詳解C#如何利用TcpListener和TcpClient實(shí)現(xiàn)Tcp通訊

    詳解C#如何利用TcpListener和TcpClient實(shí)現(xiàn)Tcp通訊

    TcpListener 和 TcpClient 是在 System.Net.Sockets.Socket 類的基礎(chǔ)上做的進(jìn)一步封裝,使用 GetStream 方法返回網(wǎng)絡(luò)流,下面我們就來(lái)詳細(xì)一下如何使用TcpListener和TcpClient實(shí)現(xiàn)Tcp通訊吧
    2023-12-12
  • c#遞歸遍歷文件夾示例

    c#遞歸遍歷文件夾示例

    這篇文章主要介紹了c#遞歸遍歷文件夾示例,需要的朋友可以參考下
    2014-03-03
  • 基于C#實(shí)現(xiàn)宿舍管理系統(tǒng)

    基于C#實(shí)現(xiàn)宿舍管理系統(tǒng)

    這篇文章主要介紹了如何利用C#語(yǔ)言開發(fā)一個(gè)簡(jiǎn)易的宿舍管理系統(tǒng),文中的實(shí)現(xiàn)步驟講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定參考價(jià)值,感興趣的可以了解一下
    2022-06-06
  • C#中DateTime函數(shù)的詳細(xì)用法

    C#中DateTime函數(shù)的詳細(xì)用法

    這篇文章介紹了C#中DateTime函數(shù)的詳細(xì)用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#比較日期的方法總結(jié)

    C#比較日期的方法總結(jié)

    在本篇內(nèi)容中小編給大家整理了關(guān)于C#比較日期的方法和相關(guān)知識(shí)點(diǎn),有需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • C# Socket 發(fā)送&接收&返回 簡(jiǎn)單應(yīng)用實(shí)例

    C# Socket 發(fā)送&接收&返回 簡(jiǎn)單應(yīng)用實(shí)例

    下面小編就為大家分享一篇C# Socket 發(fā)送&接收&返回 簡(jiǎn)單應(yīng)用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • C#編程:List.ForEach與foreach循環(huán)的對(duì)比分析

    C#編程:List.ForEach與foreach循環(huán)的對(duì)比分析

    這篇文章主要介紹了C#編程:List.ForEach與foreach循環(huán)的對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C# IQueryable及IEnumerable區(qū)別解析

    C# IQueryable及IEnumerable區(qū)別解析

    這篇文章主要介紹了C# IQueryable及IEnumerable區(qū)別解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 詳解C#實(shí)現(xiàn)MD5加密的示例代碼

    詳解C#實(shí)現(xiàn)MD5加密的示例代碼

    本篇文章主要介紹了C#實(shí)現(xiàn)MD5加密的示例代碼,詳細(xì)的介紹了幾種方法,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • WinForm限制窗體不能移到屏幕外的方法

    WinForm限制窗體不能移到屏幕外的方法

    這篇文章主要介紹了WinForm限制窗體不能移到屏幕外的方法,實(shí)例分析了C#中WinForm窗體操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評(píng)論

乾安县| 渝中区| 玛曲县| 肥城市| 嘉峪关市| 灵川县| 澄城县| 和静县| 静安区| 吴旗县| 绍兴市| 沛县| 乐清市| 札达县| 宁波市| 牙克石市| 息烽县| 汤阴县| 甘肃省| 安西县| 东港市| 娱乐| 津南区| 旬邑县| 盱眙县| 竹溪县| 德格县| 抚松县| 英山县| 海伦市| 长宁县| 亚东县| 广南县| 花莲市| 武隆县| 且末县| 宁陵县| 定州市| 五台县| 奎屯市| 台中县|