如何在javascript cookie中存储Access令牌值,并使用AJAX调用将该令牌传递给Header

时间:2015-04-24 04:08:01

标签: javascript jquery

我有一个登录表单,如下所示:

<form method="post" name="logForm" onsubmit="onLogin()" action="dashbooard.html">
    <label>Email</label>
    <input type="text" name="email">
    <label>Password</label>
    <input type="password" name="pass">
    <input type="submit" name="submit" value="Login" >
</form>

现在,当我单击“登录”按钮时,我将通过服务器进行身份验证,并生成access_token并通过REST API返回给我。

我想将access_token存储在Cookie中并将该令牌传递给请求。但是,我不知道该怎么做。我很乐意接受这方面的帮助。

2 个答案:

答案 0 :(得分:4)

以下是如何使用Cookie来解答有关access_token

的问题

<强> 1。将cookie存储在客户端上:

document.cookie='access_token=[value]'其中[value]是令牌值。

如果我们使用MDN提供的读者/作者库here,我们可以执行以下操作:

docCookies.setItem('access_token', [value]);

我们之所以使用这样的东西而不是标准方式,是为了更容易访问和删除令牌,如下面的#3所示。

<强> 2。将cookie传递回服务器:

我们需要通过标头将access_token发送回服务器。

这应该自动为您完成,假设服务器在身份验证后发送响应,如Set-Cookie: access_token=[value]

如果由于任何原因您遇到与Access-Control-Allow-Origin有关的问题,请举例说明如何为CORS设置Access-Control响应标头:

Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization

第3。删除Cookie:

使用#1中链接的读写器库,我们可以执行以下操作:

docCookies.removeItem('acccess_token');

使用Cookie进行授权时的安全注意事项:

使用Cookie进行授权时,应考虑使用XSS,MITM和CSRF攻击媒介。在基本层面:

  • 对于XSS攻击,我们可以在服务器的响应头中设置HttpOnly标志,以防止客户端脚本访问cookie。
  • 对于MITM攻击,我们可以使用Secure标志来保证cookie不会通过未加密的HTTP通道发送。
  • 对于CSRF次攻击,OWASP的建议是Synchronizer Token Pattern。它基本上是由服务器发送的随机生成的令牌,由客户端发回以验证用户完成的请求提交。

答案 1 :(得分:0)

试试此代码

document.cookie="username=John Doe";