校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程

支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程

熱門標簽:地圖標注的公司有哪些 地圖標注專業(yè)團隊 塔城代理外呼系統(tǒng) 代理接電話機器人如何取消 遂寧市地圖標注app 地圖定位圖標標注 濮陽外呼電銷系統(tǒng)怎么樣 400電話辦理哪家性價比高 天心智能電銷機器人

隨著深入使用ASP.NET Web Api,我們可能會在項目中考慮將前端的業(yè)務(wù)分得更細。比如前端項目使用Angularjs的框架來做UI,而數(shù)據(jù)則由另一個Web Api 的網(wǎng)站項目來支撐。注意,這里是兩個Web網(wǎng)站項目了,前端項目主要負責(zé)界面的呈現(xiàn)和一些前端的相應(yīng)業(yè)務(wù)邏輯處理,而Web Api則負責(zé)提供數(shù)據(jù)。

這樣問題就來了,如果前端通過ajax訪問Web Api項目話,就涉及到跨域了。我們知道,如果直接訪問,正常情況下Web Api是不允許這樣做的,這涉及到安全問題。所以,今天我們這篇文章的主題就是討論演示如何配置Web Api以讓其支持跨域訪問(Cors)。好了,下面我們以一個簡單的示例直接進入本文的主題。

首先打開Visual Studio 2013,創(chuàng)建一個空白的解決方案,命名為:CrossDomainAccessWebAPI。

再創(chuàng)建一個空的Web Api項目,命名為:CrossDomainAccess.WebAPI

接著我們右鍵單擊剛才創(chuàng)建的解決方案,創(chuàng)建一個空的Web項目用來模擬我們的網(wǎng)站對WebAPI項目進行跨域調(diào)用,如下:

完成以上步驟以后,我們的解決方案目錄如下圖所示:

下面我們在模擬網(wǎng)站的Web項目中通過Nuget添加jQuery,一下是添加jQuery包的界面:

添加完成后,到這里我們就完成了前期的準備工作。下面在WebAPI項目的Models文件夾中添加是一個實體類UserInfo,具體代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace CrossDomainAccess.WebAPI.Models
{
 public class UserInfo
 {
  public int Id { get; set; }

  public string UserName { get; set; }

  public string UserPass { get; set; }

  public string Email { get; set; }

  public DateTime RegTime { get; set; }
 }
}

然后在WebAPI項目中添加一個示例控制器:UserInfoController,這個控制器用來返回數(shù)據(jù)集合,具體代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using CrossDomainAccess.WebAPI.Models;

namespace CrossDomainAccess.WebAPI.Controllers
{
 public class UserInfoController : ApiController
 {
  /// summary>
  /// 獲取用戶信息集合的方法
  /// /summary>
  /// returns>返回用戶信息集合/returns>
  public IHttpActionResult GetList()
  {
   //對象集合模擬數(shù)據(jù)
   ListUserInfo> list = new ListUserInfo>()
   {
    new UserInfo()
    {
     Id = 1,
     UserName = "張三",
     UserPass = "FDASDFAS",
     Email = "zhangsan@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 2,
     UserName = "李四",
     UserPass = "FDASDFAS",
     Email = "lisi@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 3,
     UserName = "王五",
     UserPass = "FDASDFAS",
     Email = "wangwu@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 4,
     UserName = "趙六",
     UserPass = "FDASDFAS",
     Email = "zhaoliu@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 5,
     UserName = "田七",
     UserPass = "FDASDFAS",
     Email = "tianqi@163.com",
     RegTime = DateTime.Now
    },
    new UserInfo()
    {
     Id = 6,
     UserName = "王八",
     UserPass = "FDASDFAS",
     Email = "wangba@163.com",
     RegTime = DateTime.Now
    }
   };
   return Ok(list);
  }
 }
}

接著我們需要修改一下App_Start目錄下的WebApiConfig.cs文件中webapi的路由規(guī)則,以便通過api/{controller}/{action}的方式進行訪問,同時讓修改序列化方式,讓W(xué)ebAPI默認輸出json格式的數(shù)據(jù),具體操作如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Formatting;
using System.Web.Http;

namespace CrossDomainAccess.WebAPI
{
 public static class WebApiConfig
 {
  public static void Register(HttpConfiguration config)
  {
   // Web API 配置和服務(wù)

   // Web API 路由
   config.MapHttpAttributeRoutes();

   config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
   );
   //清除所有序列化格式
   config.Formatters.Clear();
   //添加Json格式的序列化器
   config.Formatters.Add(new JsonMediaTypeFormatter());
  }
 }
}

重新生成一下項目,并在瀏覽器中訪問,這時我們可以的到j(luò)son格式的數(shù)據(jù),如下:

復(fù)制代碼 代碼如下:
[{"Id":1,"UserName":"張三","UserPass":"FDASDFAS","Email":"zhangsan@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":2,"UserName":"李四","UserPass":"FDASDFAS","Email":"lisi@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":3,"UserName":"王五","UserPass":"FDASDFAS","Email":"wangwu@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":4,"UserName":"趙六","UserPass":"FDASDFAS","Email":"zhaoliu@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":5,"UserName":"田七","UserPass":"FDASDFAS","Email":"tianqi@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"},{"Id":6,"UserName":"王八","UserPass":"FDASDFAS","Email":"wangba@163.com","RegTime":"2016-04-21T10:36:50.7800569+08:00"}]

好了,到這里我們Web Api端的數(shù)據(jù)輸出就準備好了。為了測試是否可以跨域訪問,我們再轉(zhuǎn)到CorsDemo.UI網(wǎng)站項目中。首先創(chuàng)建一個index.aspx頁面(這個命名自己可以任意取)后打開,修改成如下的代碼:

%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="CrossDomainAccess.Web.Index" %>

!DOCTYPE html>

html xmlns="http://www.w3.org/1999/xhtml">
head runat="server">
 meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 title>/title>
 script src="Scripts/jquery-2.2.3.min.js">/script>
 script type="text/javascript">
  $(function () {
   $('#getData').click(function () {
    $.ajax({
     url: 'http://localhost:29867/api/UserInfo/getlist',
     dataType: 'json',
     success: function (data) {
      //以表格的形式在瀏覽器控制臺顯示數(shù)據(jù),IE下不支持
      console.table(data);
     }
    });
   });
  });
 /script>
/head>
body>
 form id="form1" runat="server">
  div>
   input type="button" value="跨域獲取數(shù)據(jù)" id="getData" />
  /div>
 /form>
/body>
/html>

完成以上步驟以后,啟動WebAPI項目和Web項目,并在Web項目的Index頁面中點擊跨域獲取數(shù)據(jù)按鈕,打開瀏覽器控制臺查看請求結(jié)果,在控制臺會出現(xiàn)如下結(jié)果:

控制臺提示我們跨域請求被阻止,同時提示CORS頭部信息確實,所以我們可以通過去WebAPI配置CORS來讓其支持跨域訪問。

那現(xiàn)在我們在WebAPI項目中通過Nuget添加Microsoft.AspNet.WebApi.Cors ,然后在WebApiConfig.cs文件中配置HttpConfiguration的EnableCors方法即可。具體操作如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http.Formatting;
using System.Web.Http;
using System.Web.Http.Cors;

namespace CrossDomainAccess.WebAPI
{
 public static class WebApiConfig
 {
  public static void Register(HttpConfiguration config)
  {
   // Web API 配置和服務(wù)
   EnableCrossSiteRequests(config);
   // Web API 路由
   config.MapHttpAttributeRoutes();

   config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
   );
   //清除所有序列化格式
   config.Formatters.Clear();
   //添加Json格式的序列化器
   config.Formatters.Add(new JsonMediaTypeFormatter());
  }

  /// summary>
  /// 允許跨域調(diào)用
  /// /summary>
  /// param name="config">/param>
  private static void EnableCrossSiteRequests(HttpConfiguration config)
  {
   //對所有的請求來源沒有任何限制
   var cors = new EnableCorsAttribute(
    origins: "*",
    headers: "*",
    methods: "*"
    );
   config.EnableCors(cors);
  }
 }
}

現(xiàn)在,我們再重新生成WebAPI項目并運行,接著在頁面http://localhost:31521/Index.aspx中點擊按鈕“跨域獲取數(shù)據(jù)”,通過firebug的控制臺,我們可以看到數(shù)據(jù)跨域加載成功了,如下:

更多精彩內(nèi)容,請點擊《ajax跨域技術(shù)匯總》,進行深入學(xué)習(xí)和研究。

至此,關(guān)于ASP.Net Web Api支持跨域請求的示例和演示就完成了,謝謝大家的閱讀。

您可能感興趣的文章:
  • 創(chuàng)建一個完整的ASP.NET Web API項目
  • ASP.NET中Web API的簡單實例
  • ASP.NET MVC Web API HttpClient簡介
  • ASP.NET Web Api 2實現(xiàn)多文件打包并下載文件的實例
  • ASP.NET Web API教程 創(chuàng)建Admin視圖詳細介紹
  • ASP.NET Web API如何將注釋自動生成幫助文檔
  • ASP.NET Web API教程 創(chuàng)建Admin控制器實例分享
  • ASP.NET Web API教程 創(chuàng)建域模型的方法詳細介紹
  • .Net Web Api中利用FluentValidate進行參數(shù)驗證的方法

標簽:吉林 麗江 汕頭 重慶 河南 本溪 婁底 宜春

巨人網(wǎng)絡(luò)通訊聲明:本文標題《支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程》,本文關(guān)鍵詞  支持,Ajax,跨域,訪問,ASP.NET,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程》相關(guān)的同類信息!
  • 本頁收集關(guān)于支持Ajax跨域訪問ASP.NET Web Api 2(Cors)的示例教程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲素人一区二区| 亚洲国产中文字幕| av不卡一区二区三区| 欧美国产一区二区| 99久久99久久综合| 亚洲综合999| 91精品一区二区三区在线观看| 日韩高清一区二区| 26uuu精品一区二区三区四区在线| 国产一区二区精品在线观看| 中文字幕+乱码+中文字幕一区| 91网址在线看| 午夜av一区二区| 亚洲精品一线二线三线| 懂色av噜噜一区二区三区av| 亚洲欧洲国产日韩| 欧美丰满美乳xxx高潮www| 精品一区二区国语对白| 国产精品国产自产拍高清av| 欧美三级午夜理伦三级中视频| 免费看欧美美女黄的网站| 国产偷国产偷亚洲高清人白洁| 91小视频在线免费看| 水野朝阳av一区二区三区| 精品盗摄一区二区三区| 97久久精品人人做人人爽50路| 亚洲国产精品久久不卡毛片| 亚洲精品在线观看网站| 91麻豆自制传媒国产之光| 日韩电影免费在线| 国产精品欧美久久久久无广告| 国产东北露脸精品视频| 一区二区三区在线免费观看 | 精品一区免费av| 亚洲欧洲日韩综合一区二区| 欧美电影影音先锋| av在线不卡网| 日本va欧美va瓶| 亚洲欧洲av在线| 日韩欧美亚洲国产精品字幕久久久| www.亚洲激情.com| 美女爽到高潮91| 亚洲免费在线视频| 久久综合色播五月| 色丁香久综合在线久综合在线观看| 九九**精品视频免费播放| 亚洲另类色综合网站| 久久先锋影音av鲁色资源网| 欧美在线不卡视频| 国产99久久久精品| 免费成人在线播放| 亚洲裸体xxx| 国产午夜精品理论片a级大结局| 欧美日韩日日夜夜| 不卡影院免费观看| 精品影视av免费| 视频一区二区中文字幕| 中文字幕亚洲精品在线观看| 精品国产亚洲在线| 欧美欧美午夜aⅴ在线观看| 成人黄色软件下载| 激情综合网av| 日韩国产一二三区| 亚洲黄一区二区三区| 欧美国产精品劲爆| 欧美大白屁股肥臀xxxxxx| 在线国产亚洲欧美| 国产91精品精华液一区二区三区 | 久久久天堂av| 制服.丝袜.亚洲.中文.综合| 91日韩精品一区| 国产精品亚洲一区二区三区妖精| 丝袜美腿亚洲一区二区图片| 一区二区三区在线视频观看 | 午夜精品aaa| 亚洲伦理在线精品| 中国av一区二区三区| 精品少妇一区二区三区在线视频| 欧美三级三级三级| av成人免费在线观看| 国产v日产∨综合v精品视频| 久久精品国产99国产| 日韩电影在线免费观看| 亚洲福利视频三区| 一区二区国产盗摄色噜噜| 亚洲视频你懂的| 亚洲视频一二区| 国产精品日韩成人| 久久久久久亚洲综合影院红桃| 6080国产精品一区二区| 欧美性猛交xxxx乱大交退制版| 99re热视频这里只精品| 99精品黄色片免费大全| 成人一区在线看| 成熟亚洲日本毛茸茸凸凹| 国产成人夜色高潮福利影视| 国产一区二三区| 国产精品一区二区三区99| 国产伦精品一区二区三区在线观看| 久久精品噜噜噜成人88aⅴ| 亚洲影院久久精品| 亚洲一区在线视频| 亚洲观看高清完整版在线观看| 亚洲男帅同性gay1069| 亚洲蜜桃精久久久久久久| 亚洲精品菠萝久久久久久久| 亚洲三级在线看| 亚洲黄色免费网站| 亚洲影视在线观看| 视频在线观看91| 美女网站视频久久| 秋霞午夜鲁丝一区二区老狼| 免费xxxx性欧美18vr| 麻豆91在线播放免费| 狠狠色综合日日| 国产精品一区久久久久| 东方欧美亚洲色图在线| 成人免费黄色大片| 99久久精品一区二区| 一本色道a无线码一区v| 91福利精品视频| 欧美精品一卡二卡| 欧美xxxxx牲另类人与| 久久久久久麻豆| 中文字幕一区二区三| 亚洲黄色av一区| 亚洲va欧美va人人爽| 日本女人一区二区三区| 经典一区二区三区| 国产精品2024| av亚洲精华国产精华精华| 91视频国产资源| 欧美图片一区二区三区| 欧美一区二区三级| 久久久精品天堂| 国产精品久久久久久久久免费桃花| 亚洲日本中文字幕区| 亚洲高清免费观看高清完整版在线观看 | 91麻豆福利精品推荐| 欧美日韩小视频| 欧美va在线播放| 欧美激情资源网| 亚洲精选视频在线| 五月天久久比比资源色| 精品一区二区三区香蕉蜜桃 | 日韩欧美高清在线| 亚洲国产精品成人综合色在线婷婷| 日韩码欧中文字| 亚洲线精品一区二区三区| 免费成人深夜小野草| 欧美一区二区三区日韩| 日本久久电影网| 日韩午夜电影在线观看| 中文字幕精品综合| 一区二区三区在线观看网站| 日本不卡不码高清免费观看| 国产iv一区二区三区| 欧美影院精品一区| 精品精品欲导航| 日韩一区欧美小说| 日韩精品91亚洲二区在线观看| 国内精品在线播放| 91久久精品国产91性色tv| 日韩欧美www| 亚洲色图一区二区三区| 免费精品视频在线| 91在线码无精品| 欧美成人一区二区三区片免费| 17c精品麻豆一区二区免费| 日韩高清一级片| av一二三不卡影片| 日韩精品中文字幕一区二区三区| 国产精品对白交换视频 | 一本一本大道香蕉久在线精品| 欧美夫妻性生活| 中文字幕乱码久久午夜不卡| 日韩精品一二区| 99久久婷婷国产综合精品电影| 日韩限制级电影在线观看| 亚洲欧美偷拍另类a∨色屁股| 日韩电影免费一区| 91在线观看视频| 久久中文娱乐网| 亚洲成人黄色影院| 成人午夜精品在线| 日韩欧美视频在线| 亚洲综合久久久久| 成人污视频在线观看| 欧美一区二区高清| 亚洲精品菠萝久久久久久久| 国产精品一区二区在线播放 | 欧美人妖巨大在线| 亚洲欧洲另类国产综合| 麻豆91免费看| 欧美三级蜜桃2在线观看| 国产精品网站在线播放| 极品少妇xxxx偷拍精品少妇| 7878成人国产在线观看| 亚洲精品一卡二卡| 成人激情小说网站|