成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

ASP.NETCore2.0中網(wǎng)址重定向的示例分析-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)ASP.NET Core 2.0中網(wǎng)址重定向的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)公司自2013年起,先為寧縣等服務(wù)建站,寧縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為寧縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

問題

如何在ASP.NET Core 2.0中實(shí)現(xiàn)網(wǎng)址重定向?

答案

新建一個(gè)空項(xiàng)目,在Startup.cs文件中,配置RewriteOptions參數(shù)并添加網(wǎng)址重定向中間件(UseRewriter):


public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

  var rewrite = new RewriteOptions()

    .AddRedirect("films", "movies")

    .AddRewrite("actors", "stars", true);

 

  app.UseRewriter(rewrite);

 

  app.Run(async (context) =>

  {

    var path = context.Request.Path;

    var query = context.Request.QueryString;

    await context.Response.WriteAsync($"New URL: {path}{query}");

  });

} 

運(yùn)行,并在瀏覽器地址欄輸入:http://localhost:56825/films,通過客戶端調(diào)試工具觀察重定向過程:

ASP.NET Core 2.0中網(wǎng)址重定向的示例分析

在地址欄輸入:http://localhost:56825/actors,再次觀察重定向過程:

ASP.NET Core 2.0中網(wǎng)址重定向的示例分析

討論

網(wǎng)址重定向就是根據(jù)用戶自定義規(guī)則來修改請(qǐng)求的網(wǎng)址,目的是為了將服務(wù)器資源和瀏覽器網(wǎng)址解綁定。這樣做可能是出于安全考慮, 搜索引擎優(yōu)化(SEO),用戶友好網(wǎng)址,將HTTP重定向到HTTPS等多種目的。

當(dāng)你無法使用Web服務(wù)器(IIS,Apache,Nginx)的重定向功能時(shí),ASP.NET Core提供了一個(gè)可選項(xiàng) - 請(qǐng)求網(wǎng)址重定向中間件。然后它的性能和功能比不上Web服務(wù)器的重定向。

重定向中間件可以做兩件事情:客戶端重定向和服務(wù)器重寫:

重定向(客戶端)

這是一個(gè)客戶端操作,工作流程如下:

1. 客戶端請(qǐng)求一個(gè)資源,比如 /films

2. 服務(wù)器返回301(Moved Permanently)或者302(Found)狀態(tài)碼,并在響應(yīng)頭中添加Location屬性,用來指示瀏覽器請(qǐng)求新的地址(比如/movies)。

3. 客戶端請(qǐng)求新的地址,并顯示在瀏覽器的地址欄中。

重寫(服務(wù)端)

它是一個(gè)服務(wù)器端操作,工作流程如下:

1. 客戶端請(qǐng)求一個(gè)資源,比如 /actors

2. 服務(wù)器將其內(nèi)部映射到新的地址(比如/stars)并且返回200(OK)。

在此過程中,客戶端并不知道服務(wù)器端的內(nèi)部映射操作,因此用戶看到的瀏覽器地址欄依然顯示的是最初請(qǐng)求地址。

規(guī)則

重定向和重寫規(guī)則可以是正則表達(dá)式,更加詳細(xì)的信息請(qǐng)參考:https://docs.microsoft.com/en-gb/aspnet/core/fundamentals/url-rewriting

自定義重定向規(guī)則

我們也可以自定義重定向規(guī)則,通過一個(gè)繼承自IRule接口的類來實(shí)現(xiàn):

public class MoviesRedirectRule : IRule

{

  private readonly string[] _matchPaths;

  private readonly string _newPath;

 

  public MoviesRedirectRule(string[] matchPaths, string newPath)

  {

    _matchPaths = matchPaths;

    _newPath = newPath;

  }

 

  public void ApplyRule(RewriteContext context)

  {

    var request = context.HttpContext.Request;

 

    // 已經(jīng)是目標(biāo)地址了,直接返回

    if (request.Path.StartsWithSegments(new PathString(_newPath)))

    {

      return;

    }

 

    if (_matchPaths.Contains(request.Path.Value))

    {

      var newLocation = $"{_newPath}{request.QueryString}";

 

      var response = context.HttpContext.Response;

      response.StatusCode = StatusCodes.Status302Found;

      context.Result = RuleResult.EndResponse;

      response.Headers[HeaderNames.Location] = newLocation;

    }

  }

}  

然后在Configure()中,將此自定義規(guī)則添加到RewriteOptions里面:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

{

  var rewrite = new RewriteOptions()

    .Add(new MoviesRedirectRule(

      matchPaths: new string[] { "/films", "/features", "/albums" },

      newPath: "/movies"));

 

 

  app.UseRewriter(rewrite);

 

  app.Run(async (context) =>

  {

    var path = context.Request.Path;

    var query = context.Request.QueryString;

    await context.Response.WriteAsync($"New URL: {path}{query}");

  });

}  

運(yùn)行,在地址欄輸入:http://localhost:56825/films?id=123,觀察重定向過程:

ASP.NET Core 2.0中網(wǎng)址重定向的示例分析

感謝各位的閱讀!關(guān)于“ASP.NET Core 2.0中網(wǎng)址重定向的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

當(dāng)前文章:ASP.NETCore2.0中網(wǎng)址重定向的示例分析-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://jinyejixie.com/article16/hiddg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、虛擬主機(jī)Google、商城網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
华蓥市| 南充市| 新郑市| 诏安县| 赫章县| 灌阳县| 赫章县| 隆回县| 吉林市| 宁夏| 栖霞市| 方城县| 沁源县| 天柱县| 河间市| 石首市| 桃园市| 漳平市| 合江县| 玉屏| 桐城市| 湘潭市| 安龙县| 澄城县| 交城县| 淮滨县| 广宁县| 荆州市| 乐陵市| 金华市| 罗源县| 垦利县| 平湖市| 灵丘县| 榆中县| 新蔡县| 虎林市| 镇原县| 全州县| 营口市| 遂宁市|