最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

ASP.NET MVC中設(shè)置跨域訪問問題

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:35:01
文檔

ASP.NET MVC中設(shè)置跨域訪問問題

ASP.NET MVC中設(shè)置跨域訪問問題:1、什么是跨域請求 js禁止向不是當(dāng)前域名的網(wǎng)站發(fā)起一次ajax請求,即使成功respone了數(shù)據(jù),但是你的js仍然會(huì)報(bào)錯(cuò)。這是JS的同源策略限制,JS控制的并不是我們網(wǎng)站編程出現(xiàn)了問題??蛻舳耍ňW(wǎng)頁)和后臺(tái)編程都可以有效解決這個(gè)問題??蛻舳丝梢酝ㄟ^JSONP
推薦度:
導(dǎo)讀ASP.NET MVC中設(shè)置跨域訪問問題:1、什么是跨域請求 js禁止向不是當(dāng)前域名的網(wǎng)站發(fā)起一次ajax請求,即使成功respone了數(shù)據(jù),但是你的js仍然會(huì)報(bào)錯(cuò)。這是JS的同源策略限制,JS控制的并不是我們網(wǎng)站編程出現(xiàn)了問題??蛻舳耍ňW(wǎng)頁)和后臺(tái)編程都可以有效解決這個(gè)問題??蛻舳丝梢酝ㄟ^JSONP

1、什么是跨域請求

js禁止向不是當(dāng)前域名的網(wǎng)站發(fā)起一次ajax請求,即使成功respone了數(shù)據(jù),但是你的js仍然會(huì)報(bào)錯(cuò)。這是JS的同源策略限制,JS控制的并不是我們網(wǎng)站編程出現(xiàn)了問題。客戶端(網(wǎng)頁)和后臺(tái)編程都可以有效解決這個(gè)問題??蛻舳丝梢酝ㄟ^JSONP來完成跨域訪問;在ES6中為了解除同源策略問題,想出一個(gè)辦法:當(dāng)被請求網(wǎng)站為響應(yīng)頭respone添加了一個(gè)名為Access-Control-Allow-Origin的header,設(shè)置其值等于發(fā)起請求網(wǎng)站的域名地址的話,這次請求被視為允許。其中Access-Control-Allow-Origin的值為*時(shí)表示允許所有網(wǎng)站的跨域請求。

本文主要探索如何在后臺(tái)代碼中設(shè)置允許跨域訪問。

2、在action中添加代碼

HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");

3、在webconfig添加應(yīng)用程序配置:

<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>

4、添加action過濾器

不論webapi還是mvc的action,我們都可以重寫ActionFilterAttribute過濾器的OnException方法來在action執(zhí)行完成之后,為http響應(yīng)添加header頭;OnException方法意為在action執(zhí)行完成之后進(jìn)行的操作。這個(gè)過濾器可以添加在action或者controller上,但是這樣就要為每一個(gè)action或者controller打上這個(gè)過濾器,這里將我們重寫的action過濾器添加在了全局的過濾器中,這樣,每一個(gè)action在執(zhí)行完成之后都會(huì)觸發(fā)這個(gè)過濾器,這里以webapi為例。新建類:

 /// <summary>
 /// 跨域
 /// </summary>
 public class Cores:ActionFilterAttribute
 {
 public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
 {
 base.OnActionExecuted(actionExecutedContext);
 actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin","*");
 }
 }

在webapiconfig中添加。

 public static class WebApiConfig
 {
 public static void Register(HttpConfiguration config)
 {
 // Web API 配置和服務(wù)
 // 將 Web API 配置為僅使用不記名令牌身份驗(yàn)證。
 config.SuppressDefaultHostAuthentication();
 config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
 // Web API 路由
 config.MapHttpAttributeRoutes();
 config.Filters.Add(new Cores());
 config.Routes.MapHttpRoute(
 name: "DefaultApi",
 routeTemplate: "api/{controller}/{id}",
 defaults: new { id = RouteParameter.Optional }
 );
 }
 }

總結(jié)

以上所述是小編給大家介紹的ASP.NET MVC中設(shè)置跨域訪問問題,希望對(duì)大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

ASP.NET MVC中設(shè)置跨域訪問問題

ASP.NET MVC中設(shè)置跨域訪問問題:1、什么是跨域請求 js禁止向不是當(dāng)前域名的網(wǎng)站發(fā)起一次ajax請求,即使成功respone了數(shù)據(jù),但是你的js仍然會(huì)報(bào)錯(cuò)。這是JS的同源策略限制,JS控制的并不是我們網(wǎng)站編程出現(xiàn)了問題??蛻舳耍ňW(wǎng)頁)和后臺(tái)編程都可以有效解決這個(gè)問題??蛻舳丝梢酝ㄟ^JSONP
推薦度:
標(biāo)簽: 配置 mvc ASP.NET
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top