Переписать адресное местоположение с HTTPS на HTTP - PullRequest
0 голосов
/ 07 ноября 2018

Можно ли переписать расположение адреса с https на http? Я пытаюсь реализовать это несколькими способами, но всегда открываю страницу с помощью https.

Я пытался добавить эти правила в app.Use:

    app.Use(async (context, next) =>
    {
        if (context.Request.IsHttps)
        {
            if (context.Request.Path.Value.Contains("https") && !context.Request.Path.Value.Contains(".salesrater.com"))
            {
                var path = context.Request.Path.Value.Replace("https", "http");
                context.Response.Headers[HeaderNames.Location] = path;
                context.Response.Redirect(path);
            }
            else
            {
                await next();
            }
        }
    });

Этот случай не работает для меня. Затем я попытался использовать опцию перезаписи:

    var options = new RewriteOptions();
    options.Add(new ServerRewriteRule(cache, Configuration));
    app.UseRewriter(options);

Что реализовано в классе следующим образом:

    var request = context.HttpContext.Request;
    var path = $"{request.Scheme}://{mapping.Domain}{request.Path.Value.Replace(mapping.Path, string.Empty)}{request.QueryString}";

    if (path.Contains("https"))
    {
        path = path.Replace("https", "http");
    }

    var response = context.HttpContext.Response;
    response.StatusCode = StatusCodes.Status302Found;
    response.Headers[HeaderNames.Location] = path;
    response.Redirect(path);
    context.Result = RuleResult.EndResponse;

Обновление: Я забыл заметить, что у меня есть случаи, когда мне нужно отфильтровать некоторые URL-адреса, которые должны идти по https, а которые не должны

1 Ответ

0 голосов
/ 07 ноября 2018

Вы можете сделать это в web.config, нет необходимости делать это из кода. Используйте правило перезаписи: https://forums.iis.net/t/1206943.aspx?HTTPS+to+HTTP+redirect+in+web+config

<rule name="Redirect to HTTP" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{R:1}" pattern="^onepage/(.*)$" negate="true" />
    <add input="{HTTPS}" pattern="^ON$" />
  </conditions>
  <action type="Redirect" url="http://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
</rule>
...