【问题标题】:Set-cookie present in response but not set in browser (Application/cookes) Angular设置cookie存在于响应中但未在浏览器中设置(应用程序/厨师)Angular
【发布时间】:2021-06-16 19:12:31
【问题描述】:

您好,我正在使用 typescript 10+ 构建客户端 登录后,我收到一个带有 JSESSIONID 的 set-cookie,因为这是一个 HttpOnly true,所以我无法在浏览器中自动设置它,而且我希望这是自动化的

我需要在每次响应时将其设置为浏览器,并在每次来自服务器的请求时将其返回

  logIn(restUserDTO: RestUserDTO): Observable<any> {
    const haderParameters = {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Access-Control-Allow-Headers': 'Content-Type',
      'Authorization' :'BASIC '+ btoa(restUserDTO.username+":"+restUserDTO.password)
    }
    const haderOprions = {                                                                                                                                                                                 
      headers:new HttpHeaders(haderParameters) 
    };
    return this.http.post(constants.serverUrl+'api/rest/wout/login',null,haderOprions)
  } 

这是我用来登录我所缺少的东西的代码?

感谢您的宝贵时间

[1]: https://i.stack.imgur.com/qES19.png

【问题讨论】:

  • 是什么让你觉得cookie没有被浏览器自动发回?
  • 嗨,我在应用程序选项卡上,在 cookie/域下没有设置任何内容

标签: angular setcookie


【解决方案1】:

如果您希望 cookie 以两种方式工作,则必须包含请求的凭据

http.post('url', null, {...haderOprions, withCredentials: true});

【讨论】:

  • 嘿,这让我的夜晚变得更好了,我很感激,但现在我需要这个 cookie 回到服务器,因为我收到了 401 myProfile(): Observable{ return this.http。 get(constants.serverUrl+'api/rest/wout/myprofile');并且请求中缺少 JsessionId
  • 您必须为所有请求添加 {withCredentials: true},这应该与 cookie 一起使用。您也可以通过 iterceptor 来完成,方法是使用此凭据字段修改应用程序中的所有请求
  • 这就是为什么我现在没有工作的原因,但是这个 {withCredentials} 到底是什么?就我浏览互联网而言,设置 cookie 会自动添加到浏览器存储中,并请求标头,但显然不是
  • 对于 ajax 查询它不是。有角的家伙从本机 fetch API 中获取了这个特性,但是这个标志更容易理解。请参阅developer.mozilla.org/ru/docs/Web/API/Fetch_API/Using_Fetch 选项:凭据
  • 非常有用,我希望我早点知道这个页面
猜你喜欢
  • 2019-04-26
  • 2020-10-07
  • 2021-07-20
  • 2023-01-16
  • 2019-06-21
  • 2023-03-24
  • 2014-08-24
  • 2016-11-19
  • 1970-01-01
相关资源
最近更新 更多