怎么对。网络核心的请求进行转发

  介绍

怎么对。网络核心的请求进行转发?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强>请求转发问题

内网环境跟外网隔离,现在外网的请求都需要一个专用服务器转接到内网处理,用应用程序。UseRewriter转接,从外网服务器转发到内网服务器的时候标题里面的授权居然丢失了,重新设置RewriteContext。HttpContex头也不行,有没有办法解决?当时我的想法是,实在不的行,在外网将牌直接放到url或身体里不就完的事,这样的话,外网每增加一个接口,都得将牌取出然后进行转换,内网以相同方式获取,这是小伙伴所不能忍受。这里我们创建两个网络应用程序,然后添加自定义转发规则。首先我们在第一个Web应用程序创建针对如下接口请求转发规则

public  class  RewriteForwardRules   {   public 才能static  void  RedirectRequests (RewriteContext 上下文)   {才能   ,,,var  request =, context.HttpContext.Request;      ,,,if  (request.Path.Value.StartsWith (“/api/forward",, StringComparison.OrdinalIgnoreCase))   ,,,{   ,,,,,var  response =, context.HttpContext.Response;      ,,,,,response.Headers [HeaderNames.Location],=,“http://localhost: 8091/api/custom";      ,,,,,context.Result =, RuleResult.EndResponse;   ,,,}   ,,}   }

然后在启动中注入我们自定义转发规则

app.UseRewriter (new  RewriteOptions阀门()(RewriteForwardRules.RedirectRequests));

当然,如果URL (GET请求)或身体(POST请求)中包含其他参数,将其对应转发写入URL或身体即可,这令牌里已存储在请求头中,所以我们直接转发请求即可。接下来我们通过邮差模拟外网发出如下帖子请求

怎么对。网络核心的请求进行转发

紧接着,我们在第二个网络应用程序中来接收转发请求,并获取令牌信息

[HttpPost]   public  IActionResult 自定义()   {   var 才能;token =, Request.Headers [HeaderNames.Authorization] .ToString ();      return 才能好(令牌);   }

然后我们一运行,发现结果都没转发到对应内网应用程序,这是为何呢?事实上,转发请求涉及到资源重分配指向另一URL问题,当然我们需要注意的是,既然是转发请求,势必转发者和接受者请求方式必须一致,要不然肯定不行,所以我们必须显式指定重定向状态码,设置为308,如下:

怎么对。网络核心的请求进行转发

怎么对。网络核心的请求进行转发

针对状态308码的意思,我们可以参看。净核心中对于状态码枚举解释:永久重定,向原始请求方式和目标请求方式必须一致,支持原始请求和目标请求同为GET或POST。NET核心中关于此状态码的解释并不那么详细,我们来到专对状态码官方解释(https://httpstatuses.com/308),这里我贴下谷歌翻译后的中文:308年永久重定向:已为目标资源分配了一个新的永久URI,以后对该资源的任何引用都应使用其中一个URI。具有链接编辑功能的客户端应在可能的情况下自动将对有效请求URI 1的引用重新链接到服务器发送的一个或多个新引用。服务器应在响应中生成一个位置头字段,其中包含新的永久URI的首选URI引用。用户代理可以使用位置字段值进行自动重定向。服务器的响应有效负载通常包含简短的超文本注释,其中包含指向新URI的超链接。默认情况下,308响应可缓存;即,除非方法定义或显式缓存控制。

当然,我们也可以设置状态码为301301年永久移动:已为目标资源分配了一个新的永久URI,以后对该资源的任何引用都应使用其中一个URI。那么状态301和308码到底有何区别呢? 301类似308年永久移动,只不过,301不允许将请求方法从得到更改为职位。

<强>总结

<李>

请求转发时注意设置状态码为301或308

<李>

301类似308年永久移动,只不过,301不允许将请求方法从得到更改为文章

<李>

基于以上所述,请求转发推荐使用状态码308

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

怎么对。网络核心的请求进行转发