![](/img/trans.png)
[英]Testing OWIN Middleware in ASP.NET WebApi 2: How to set cookies?
[英]Cookies are not set in .NET6 WebApi application
由於某種原因,我的 cookies 沒有被設置。 我嘗試了幾件事,但是當我檢查 Chrome 或 Edge 中的 Cookie 存儲時,我的 cookie 似乎從未設置過。
在我的 Startup.cs 中,我有以下內容:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
// Also tried SameSiteMode.None
options.MinimumSameSitePolicy = SameSiteMode.Lax;
});
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseCors(options => options
.WithOrigins("http://localhost:3000")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
app.UseCookiePolicy(); // Breakpoint hits this code
}
...
}
然后在我的 Controller 操作中,我嘗試設置 cookie:
public IActionResult Test()
{
// Also tried different SameSiteMode options, non seem to work.
// If I set a breakpoint, then it hits. So code gets executed.
HttpContext.Response.Cookies.Append("X-Blaat", "test", new CookieOptions { Expires =
DateTime.UtcNow.AddMonths(1), SameSite = SameSiteMode.Lax, IsEssential = true});
return Ok();
}
這個 Web API 在https://localhost:44365
上運行。 端點存在: https://locahost:44365/api/test
。
我通過在http://localhost:3000
上運行的 React 應用程序調用此端點。
但由於某種原因,我的 cookie 永遠不會被設置。 盡管我可以通過代碼進行調試。
有人知道為什么我的 cookie 永遠不會被寫入瀏覽器嗎?
當我通過 Swagger 調用同一個端點時,cookies 確實設置好了。
由於某種原因,當我通過我的 React 應用程序調用我的 Web API 時,它們沒有出現。
我懷疑問題在於它運行在與我的 Web API 不同的端口上。 有什么我可以嘗試解決這個問題的嗎?
我假設你已經弄清楚了。 但問題是您試圖將 cookie 從 https 設置為 http。 如果您在 program.cs 中刪除該行app.UseHttpsRedirection();
並且在您的客戶端中使用 api 的 http 版本,應該可以)
在向服務器發出登錄請求時,確保您的 React 應用程序具有credentials: 'include'
。
根據MDN
除非使用設置為
include
的credentials
選項調用fetch()
,否則 fetchfetch()
:
- 不會在跨域請求中發送 cookies
- 不會設置在跨域響應中發回的任何 cookies
還要確保始終在 CorsPolicyBuilder 上設置CorsPolicyBuilder
.AllowCredentials()
,而不僅僅是在開發模式下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.