Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core Samesite cookie标志和ASP 2.1_Asp.net Core_Cookies_Setcookie_Samesite - Fatal编程技术网

Asp.net core Samesite cookie标志和ASP 2.1

Asp.net core Samesite cookie标志和ASP 2.1,asp.net-core,cookies,setcookie,samesite,Asp.net Core,Cookies,Setcookie,Samesite,我正在尝试升级我的ASP.NETCore2.1项目,使其符合中描述的新samesite cookie行为 我拥有的2.1版本具有旧的行为。我想将它升级到2.1的新版本,其中 下面的代码实际上会将“samesite=none”放在set cookie头的连线上,而不是完全省略samesite文本(这是旧的行为) 我相信我想要的版本是v2.1.14 at, 但是当我进入nuget包管理器时,我没有看到v2.1.14的选项。我看下面。我选择2.1.6是因为我猜2.1.14中的SDK版本是2.1.607

我正在尝试升级我的ASP.NETCore2.1项目,使其符合中描述的新samesite cookie行为

我拥有的2.1版本具有旧的行为。我想将它升级到2.1的新版本,其中 下面的代码实际上会将“samesite=none”放在set cookie头的连线上,而不是完全省略samesite文本(这是旧的行为)

我相信我想要的版本是v2.1.14 at, 但是当我进入nuget包管理器时,我没有看到v2.1.14的选项。我看下面。我选择2.1.6是因为我猜2.1.14中的SDK版本是2.1.607。虽然我不确定这是不是正确的决定

但是仅仅添加lib似乎对samesite行为没有任何影响。它仍然被遗漏了。我很确定我上面提到的代码中的位置就是正确的区域。安全策略行运行良好。如果我将其移除/放回,我会看到集合cookie中的“安全”文本在fiddler跟踪中来来去去去。只是SameSite属性似乎没有效果

我已经将我抓取的aspnetcore版本升级到了2.1.7甚至2.2(虽然我还不想走那么远),但仍然得到了相同的行为。它就像是被旧版本的asp.net内核卡住了一样

我的项目包如下图所示。在此屏幕截图中,我只升级了Microsoft.AspNetCore。虽然在过去,我已经升级了一些其他的没有效果。我也瞄准了.NET4.8

这是我的请求/答复。请注意,如果我更改chrome设置以尊重旧的samesite行为,则不会得到400错误的响应。我找到了一个302的resposne。我希望在SetCookie中我的应用程序的响应中看到samesite=none

GET /worksite/authorized?code=e2fqpnolfjtOdEFOWWdDBkDYMKy8wr HTTP/1.1
Host: localhost:44396
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-Dest: iframe
Referer: https://localhost:44396/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9

-----

HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Server: Kestrel
Set-Cookie: .AspNetCore.Session=VALIDSESSIONID%; path=/; secure; httponly
Persistent-Auth: true
X-Powered-By: ASP.NET
Date: Wed, 20 Jan 2021 14:19:27 GMT
Content-Length: 0
所以我的问题是

  • 对于Microsoft.AspNetCore包,我应该从Nuget获得什么版本

  • 是否需要更新任何其他包以获得我想要使用的相同站点行为

    //选项的类型为SessionOptions options.Cookie.SameSite=SameSiteMode.None

  • 你能想出我为什么不能在电线上得到samesite=none的原因吗


  • 为了在线路上获得samesite=none,我必须将所有的aspnetcore2.1包升级到其2.2等效版本

    什么与什么一起工作的版本号是不可能弄清楚的。我本想把事情保持在2.1,但为了确保我有匹配的LIB,我不得不去2.2


    然后我不得不添加一个全新的包,因为一些该死的原因。Microsoft.Net.Http.Headers版本2.2.8。

    由于您似乎在ASP.Net Core 2.1应用程序中以.Net Framework为目标,因此缺少一个小而重要的部分:您需要将2个NuGet软件包更新到这些版本或更高版本():

    
    
    “你可以在20小时内接受你自己的答案”-因为在Stack Overflow我们都在浪费你该死的时间。我没有Cookie政策。但是头球也是绝对需要的。
    GET /worksite/authorized?code=e2fqpnolfjtOdEFOWWdDBkDYMKy8wr HTTP/1.1
    Host: localhost:44396
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
    Sec-Fetch-Site: cross-site
    Sec-Fetch-Mode: navigate
    Sec-Fetch-Dest: iframe
    Referer: https://localhost:44396/
    Accept-Encoding: gzip, deflate, br
    Accept-Language: en-US,en;q=0.9
    
    -----
    
    HTTP/1.1 400 Bad Request
    Cache-Control: no-cache
    Pragma: no-cache
    Expires: -1
    Server: Kestrel
    Set-Cookie: .AspNetCore.Session=VALIDSESSIONID%; path=/; secure; httponly
    Persistent-Auth: true
    X-Powered-By: ASP.NET
    Date: Wed, 20 Jan 2021 14:19:27 GMT
    Content-Length: 0
    
    <PackageReference Include="Microsoft.Net.Http.Headers" Version="2.1.14" />
    <PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="2.1.14" />