[英]ASP.NET Core Razor unable to set cookies when using Apache as reverse proxy
我使用 Apache 作为反向代理在 CentOS 上托管我的 ASP.NET Core Razor 应用程序。 我可以使用我的域访问该网站,但是无论我做什么,该应用程序都无法在我的浏览器中设置 cookie。
这是我的 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");
}
我不确定我做的一切是否正确,也许我在某个地方出错了,但事实是我的应用程序在 localhost 上运行良好,并且也可以设置 cookie。
好的,我找到了答案,简直不敢相信这么简单。 在我的 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;
});
现在 cookie 的设置没有任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.