【问题标题】:Cookie not set in request header after set withcredential = true设置 withcredential = true 后未在请求标头中设置 Cookie
【发布时间】:2018-12-21 22:54:28
【问题描述】:

我在登录后调用 api 并且在登录响应标头中设置 cookie 是 pass 并且在浏览器中设置了 cookie。但是当我尝试发出其他请求时,请求标头中没有 cookie 传递。我尝试添加 withcredential = true 并且还允许带有所有必需标头的 CORS。 登录响应中在浏览器中设置的 cookie

.AspNetCore.Identity.Application    
expires 2018-07-27T14:26:34.000Z
httpOnly    true
path    /
secure  true
value   CfDJ8IpQ2KMnnJJCu-Bxqp-xHNOQGuT6Ig74z_z6fhAba0WGCMyq7er9Zo87dX36mvr3vHm827XQFM_8cNQiv811mitpYZ4rRVRp4iV3RfpDkqGL-4UizEGUkJfSxxkFzIbVEEJNwIJXf5iFFlbC7Fw8zKDn7DYJN70iniH4HE-bzqJ4KXSsKnCyqePsYyi6iJ0_Rkk_TiE-TXggnFqrU_8n5XPcYaRVeinAeHRZ2xmJbcVrOwFAV1-D8zwgpnJxs2WaLsM9h5IoqdV1wOwyT-Awoy0QqAtTiUPs5h5Gh52HubsBcWLPKE_FbzfmK_1HsDGH1e1PIHYJaIgLx-q0trTSGK-22wvOnqMipax94zoO6mfF2Pbrz7NM-eJBBCTkSoNYXVIj8EpRPJXhk8uLKC9rqon2hA4qHpnrUWWdz1LT7FYzHjnhAx3hctXr2laQgc3ipT410zI15tl5XIIjEbqr9D5E6o-4MkcSCLsHCLkaurSmoQWF2VRQ8OuVHFz6Z7XTu7myAsCFWf3INcV-WBtJY6l9Luk2D7uenofPGFZ8D4fDL0oaPqvAKve6N8r2Q_eDXEVf-

查看我的代码

Request header from browser console
Accept  application/json, text/plain, */*
Accept-Encoding gzip, deflate, br
Accept-Language en-US,en;q=0.5
Access-Control-Allow-Credentials    true
Connection  keep-alive
Content-Length  27
Content-Type    application/x-www-form-urlencoded
Host    localhost:44354
Origin  http://localhost:4200
Referer http://localhost:4200/changepassword
User-Agent  Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/61.0
withCredentials true

我的代码:-

changePassword(changePasswordModel: ChangePassword): Observable<ApiResponse> {
    const body = JSON.stringify(changePasswordModel)

     let enco : any = new HttpHeaders()
        .set('Content-Type', 'application/x-www-form-urlencoded')
        .set('withCredentials', 'true')
        .set('Access-Control-Allow-Credentials', 'true');

    return this._httpClient.post(this.identityAPIEndPoint + 'Account/ChangePassword', body, { headers: enco, withCredentials: true}).pipe(
      map((response: Response) => <ApiResponse>response.json()));
  }

我将 Angular 5 与 HttpClient 一起用于发布请求。 我是任务吗? 请给我提示。

谢谢,

【问题讨论】:

    标签: angular cookies cors


    【解决方案1】:

    我认为您的问题是您的 cookie 的 scope。有关更多信息,请参阅 Scope of cookies 部分 here。

    因此,您应该为所有页面设置相同的path,以便所有页面都可以使用 cookie。例如,您可以将path 设置为/ 或应用程序的基本路径。

    Access-Control-Allow-Credentials 是一个响应标头,因此它应该在响应中而不是在请求中提供:请参阅here。

    withCredentials 选项根本不是 HTTP 标头,而是应该在 options 对象中传递的选项:请参阅此 link。

    另外,阅读 this 文章了解更多关于 CORS 的信息。

    【讨论】:

    • 您好,感谢您的回复,但我的 cookie 路径与您所说的“/”相同,请参阅我已添加在浏览器中设置的 cookie
    • 您能否提供您为登录和第二次呼叫而进行的呼叫的 URL?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    • 2014-09-26
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多