我正在开发一个 AngularDart 网络应用程序。
我需要从使用 cookie 身份验证的 json 服务器检索 cookie。
所以在连接时,我必须在正文中发布凭据,然后服务器给我一个包含 cookie 的响应。
import 'package:http/browser_client.dart';
Response response = await _http.post(_loginUrl, body: json.encode(datas));
响应没问题,我从服务器得到 200 状态码和 json 响应,但在 Postman 中找不到 cookie 我确实得到了它。
那么如何从响应中检索 cookie?
编辑:从服务器返回到 postman 的信息:
ASP.NET_SessionId=03e95c12-6098-4f07-b9a9-054377b0311d; path=/; domain=.www.xxxxx.fr; HttpOnly; Expires=Tue, 19 Jan 2038 03:14:07 GMT;
编辑:这是从服务器到 Dart 应用程序的原始 header :
t=1462088 [st=142] HTTP_TRANSACTION_READ_RESPONSE_HEADERS
--> HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.5
Set-Cookie: ASP.NET_SessionId=f229a77e-5eb6-4c6c-9c57-9280947cb434; path=/; HttpOnly
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Date: Fri, 30 Nov 2018 09:52:50 GMT
Content-Length: 22443
所以服务器发回cookie,但浏览器似乎没有保存它......
好的,最后,在API服务器上发现了一个问题,开发人员没有正确检查cookie。一般来说,只有一个cookie被发送到这个服务器,所以在它的代码中,它采取了第一个......但是从浏览器中,可以同时发送几个cookie。所以他做了一些改变来检查好的...
最佳答案
postman 应该表明这是一个 HttpOnly
无法从 JavaScript 读取的 cookie(当然,同样适用于 Dart)
另见 https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#Secure_and_HttpOnly_cookies
cookie 将自动发送回服务器,因此无需从 JavaScript 读取它。允许从 JavaScript 访问只会破坏安全性。
关于dart - 使用 dart web 应用程序 http 时获取/设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53523857/