ASP.NET Core Razor не может установить куки при использовании Apache в качестве обратного прокси - PullRequest
0 голосов
/ 20 января 2019

Я размещаю свое приложение ASP.NET Core Razor на CentOS, используя Apache в качестве обратного прокси-сервера.Я могу зайти на сайт, используя свой домен, но приложение не может установить куки в моем браузере, независимо от того, что я делаю.

Это конфигурация для заголовков в моем startup.cs:

services.Configure<ForwardedHeadersOptions>(options =>
        {
            options.KnownProxies.Add(IPAddress.Parse("x.x.x.x"));
            options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
        });

app.UseForwardedHeaders(new ForwardedHeadersOptions
        {
            ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
        });

        app.UseAuthentication();

И это конфигурация виртуального хоста в файле apache httpd.conf:

  <VirtualHost *:80>
ServerName mysite.com
ServerAlias subdomain.mysite.com
ServerAdmin webmaster@mysite.com

ProxyPreserveHost On
ProxyPass / http://localhost:5001/ retry=0
ProxyPassReverse / http://localhost:5001/ retry=0
</VirtualHost>

Я использую этот код для настройки файлов cookie и не работает:

 public IActionResult OnPost()
        {
Response.Cookies.Append("mycookie", "cookie-value");
                            return RedirectToPage("/Index");
}

Я не являюськонечно, если я все делаю правильно, возможно, я где-то ошибаюсь, но дело в том, что мое приложение отлично работает на локальном хосте и может также устанавливать куки.

1 Ответ

0 голосов
/ 27 января 2019

Хорошо, я нашел ответ, и я не могу поверить, что это было так просто. В моем файле Startup.cs я установил политику cookie:

services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

Потому что в режиме разработки я постоянно использовал приложение, и на начальных этапах я давал разрешение на настройку cookie, но вскоре после этого я удалил код, который должен установить разрешение true для пользователя, так как это был этап разработки.

Я только что перешел на это:

services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => false;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

И теперь куки устанавливаются без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...