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

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

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

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

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

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

解決,源碼

復(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);
        }


前臺調(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("提示", "操作失敗,請檢查網(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ò)流,下面我們就來詳細(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#語言開發(fā)一個簡易的宿舍管理系統(tǒng),文中的實(shí)現(xiàn)步驟講解詳細(xì),對我們學(xué)習(xí)C#有一定參考價值,感興趣的可以了解一下
    2022-06-06
  • C#中DateTime函數(shù)的詳細(xì)用法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

泉州市| 永福县| 班玛县| 武城县| 古浪县| 临高县| 隆昌县| 巴林右旗| 苏尼特左旗| 石狮市| 琼中| 多伦县| 崇义县| 元阳县| 栾川县| 保德县| 思茅市| 土默特右旗| 吉水县| 佛山市| 盖州市| 怀宁县| 普兰县| 都江堰市| 财经| 东丰县| 旅游| 新河县| 闽清县| 柯坪县| 罗平县| 喀喇沁旗| 新化县| 台东市| 松江区| 乐昌市| 满洲里市| 大城县| 锡林浩特市| 宁强县| 洛阳市|