freeCodeCamp/guide/chinese/javascript/manipulating-cookies/index.md

68 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: Manipulating Cookies
localeTitle: 操纵Cookies
---
## 操纵Cookies
获取或设置cookie是一项简单的操作可以通过访问浏览器文档对象上的cookie属性来实现。
您可以找到一个令人惊叹且信息丰富的食谱网站,为您的客人烹制外国餐,但它是外语,幸运的是,您可以使用选择下拉列表更改网站上的语言。几天后,您再次访问同一站点为您的母亲制作菜肴,但现在您默认使用您的母语查看该网站。
_该网站会记住您上次访问时选择的语言并以**cookie的**形式存储。现在它通过读取该cookie自动选择您的首选语言。_
`userLanguage:french`
Cookie用于在客户端部分以`name:value`对的形式存储数据。它允许网站在浏览器上存储用户特定信息以供以后使用。存储的信息可以是`sessionID` `userCountry` `visitorLanguage`等。
另一种在客户端存储数据的方法是`localstorage` 。
### 设置Cookie
可以使用下面的语法设置cookie但强烈建议使用类似于最后提到的库以便让每个人都能更轻松地进行开发。在设置cookie时您也可以设置它的到期时间。如果跳过则在浏览器关闭时会删除cookie。
**请记住特定域设置的cookie只能由该域及其子域读取。**
```javascript
// Using vanilla javascript
document.cookie = 'userLanguage=french; expires=Sun, 2 Dec 2017 23:56:11 UTC; path=/';
//Using JS cookie library
Cookies.set('userLanguage', 'french', { expires: 7, path: '/' });
```
_Cookie将在7天后到期_
### 获取Cookie
```javascript
// Using vanilla javascript
console.log(document.cookie)
// => "_ga=GA1.2.1266762736.1473341790; userLanguage=french"
// Using JS cookie library
Cookies.get('userLanguage');
// => "french"
```
### 删除Cookie
为了删除cookie将过期日期设置为过去的某些内容。
```javascript
// Using vanilla javascript
document.cookie = 'userLanguage; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/';
//Using JS cookie library
Cookies.remove('userLanguage');
```
_如果您发现自己在项目中玩了很多cookie请使用像这样的[JS Cookie](https://github.com/js-cookie/js-cookie)这样的库节省大量时间。_
#### 更多信息:
* [Cookie解释道](https://www.quirksmode.org/js/cookies.html)
* [MDN Cookie指南](https://developer.mozilla.org/en-US/docs/Web/API/document/cookie)
* [Udacity Cookie视频](https://www.youtube.com/watch?v=xdH9zsW1CK0)
* [HTTP cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies)