【发布时间】:2021-01-26 05:37:57
【问题描述】:
我确实在设置 cookie 时遇到了问题。我在 Azure Functions 上运行一个小型应用程序,并将一个静态网页作为前端,在登录请求中,我的函数在响应中正确返回了一个 cookie。这是来自我的 Azure 函数的整套响应标头。
HTTP/1.1 200 OK
Date: Sun, 11 Oct 2020 20:40:16 GMT
Content-Type: application/json; charset=utf-8
Server: Kestrel
Content-Length: 180
Set-Cookie: RefreshToken=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJVc2VyTmFtZSI6IlNvc3NlbmJpbmRlciIsImV4cCI6IjYzNzM4MDQ2NTE3MTM3NjE4NCJ9.CCv3a41iPut4eC9jK2eqAzOLP5tWLjMlRgduSkUpS40; expires=Mon, 11 Oct 2021 20:40:17 GMT; path=/; samesite=lax
Set-Cookie: Test=Val; path=/
Access-Control-Expose-Headers: Set-Cookie
如您所见,我包含了我的正确令牌,以及一个小的测试 cookie,只是为了验证它是否可以与一个非常简单的 cookie 一起使用。提示,它没有。
这是我的要求:
可悲的是,无论我尝试什么,chrome 和 e.g. Firefox 完全忽略了我的 cookie。无论我尝试什么,我都没有成功设置一个 cookie。
我现在在 localhost 和 *.web.core.windows.net 静态网站上尝试了它,但我就是无法让它工作。
我认为我的后端不是罪魁祸首,因为响应标头似乎设置正确。但有些事情不太对劲。我已经阅读了很多线程,现在提到应该设置什么,不应该设置什么,我现在可能已经全部尝试过了。无论是安全标志,同站点标志,等等。
我在这里错过了什么?
编辑:我在http://www.filedropper.com/cookieproblem添加了一个最小的可重现示例
运行:
-
导航到包含 CookieProblem.csproj 的“CookieProblem”文件夹。打开 cmd 并使用“func start”运行它(需要 Azure Functions CLI 工具)
-
现在,在 VS 中运行 BlazorApp1。打开页面并保持开发工具打开。在加载时,它应该向网络选项卡中名为“Run”的本地运行函数发出请求。
-
它现在也不应该为你设置 cookie。
【问题讨论】:
-
您如何发出以 Set-Cookie 标头作为响应的 HTTP 请求?点击链接?提交表格?使用
fetch或XMLHttpRequest?还有什么?另外:它是跨域的吗? -
@Quentin 我添加了请求 - 这是一个有点异国情调的设置,我使用的是 C# WebAssembly,所以它本质上是 C# HttpClient。不确定它被翻译成什么。关于跨域:本地没有,但在生产中它在不同的域上调用我的 Azure 函数,所以在那里跨域
-
@Quentin 我添加了一个包含我的问题的压缩 sln
-
请阅读Something on my web site doesn't work. Can I just paste a link to it?。当外部资源消失或固定时,依赖于外部资源来理解的问题变得毫无用处。创建一个minimal reproducible example 并将其放入问题本身。 Stackoverflow 确实支持inline live demos
标签: c# http cookies azure-functions blazor