当前位置: 首页 > 知识库问答 >
问题:

C#307自动临时重定向问题

邢高澹
2023-03-14

我需要设置客户端请求从一台服务器到另一台服务器的临时自动重定向。从服务器端:

string url = Constants.UrlRedirect;
Response.Headers.Add("Location", url);
return StatusCode(Microsoft.AspNetCore.Http.StatusCodes.Status307TemporaryRedirect);

然而,从客户端来看,不会发生自动重定向,并且该过程陷入异常(状态代码307)。我可以通过WebException提供重定向,但我不想。如何设置自动重定向?请帮忙。客户端代码:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "POST";
webRequest.ContentType = "application/json";

using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
{
   string json = JsonConvert.SerializeObject(post);
   streamWriter.Write(json);
   streamWriter.Flush();                                                                                                                             
   streamWriter.Close();
}

HttpWebResponse httpResponse = (HttpWebResponse)webRequest.GetResponse();
string result = string.Empty;
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
   result = streamReader.ReadToEnd();
}

共有1个答案

武嘉祥
2023-03-14

在我的情况下,我得到相同的状态代码307。解决方案是以下答案的组合:https://stackoverflow.com/a/46257876/9674093以及WebException中的正确重定向链接。正确的链接在e.回复的WebHeaderCollection的“位置”下。

要获得它,您可以使用这个值(在我的例子中,它是一个值4):

Uri Link = new Uri(e.Response.Headers.Get(4));

或者类似这样的东西:

Uri Link = new Uri(e.Response.Headers.Get("Location"));

示例:

WebResponse response;
        try {
           response = GetWebResponse(your_url);
        }
        catch(WebException e)) {
           if(e.Message.Contains("307")
             {
             //Get redirect-link from e.Response.Header.Location
             Uri Link = new Uri(e.Response.Headers.Get(4));
             // Start second request
             var second_request = GetWebRequest(Link);
             response = GetWebResponse(second_request);
             }
        }
                    
 类似资料:
  • 我想知道当从OpenID Connect Endpoint检索JWKS时,Jose4J是否处理重定向超文本传输协议状态代码(例如307)。 我自己现在做检索和传递JWKS给Jose4J所谓的带外。现在,当我切换网络时,我得到了很多307,不知道让Jose4J在支持307和其他重定向状态时进行JWKS检索是否明智 谢谢 简

  • 我想知道301和307重定向之间的区别。 我希望通过自制url重定向器生成反向链接,我希望任何“链接果汁”或“页面排名果汁”都能直接从原始主页流向最终url,但如果其中一个原始主页出现问题,我希望能够通过删除该特定页面的重定向链接来关闭该链接。有道理? 我的理解是,301是永久性的,这意味着谷歌将看到301并更新其缓存的URL作为最终目的地,而不管我以后是否取消重定向。 如果我使用307,它将不会

  • 我有一个fastAPIendpoint,它接收文件并将其保存到磁盘,如下所示: 当我通过的docs界面上传文件时,这是可以预期的。 但是,尝试与curl相同失败: curl命令不返回任何内容,并且在服务器端记录

  • 我使用Java编写了soap客户端服务 我还使用了Spring WS 当我通过SoapUI发送请求时,我会得到响应 当我使用客户机代码发送请求时,我得到一个错误 客户配置 你能帮助我吗?我真的不知道怎么修。谢谢

  • 我正在从浏览器调用POST请求(比如请求a)。在重定向请求时,我尝试在后端执行以下操作, (2) (3)效果良好。 (1)没有按预期工作。当请求B被调用时,cookie值没有被清除——它重复使用请求A中的值。有人能给我提供一些关于这一点的见解吗?

  • 问题内容: 我刚刚创建了我的第一个jQuery移动网站。 我想让那些使用手机查看“完整站点”的人自动转移到“移动站点”。但是,如果愿意,也可以单击链接来查看完整站点。 我不知道从哪里开始。我可以使用一些JavaScript吗? 问题答案: if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)