文章目录
1 介绍
在vue中通常使用axios进项http请求,但是axios不带cookie,这里可自己获取cookie,放到参数中进行登录验证等,方法不唯一。
2 utils
cookie.js
export const b_getCookie = (c_name) => {
var name = c_name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1);
if (c.indexOf(name) != -1) {
return c.substring(name.length, c.length);
}
}
return "";
}
export const b_setCookie = (c_name, value, expiredays) => {
var exdate = new Date();
exdate.setDate(exdate.getDate() + expiredays);
document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}
export const b_delCookie = (c_name) => {
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval = getCookie(c_name);
if (cval != null)
document.cookie = c_name + "=" + cval + ";expires=" + exp.toGMTString();
}
3 Test.vue
<template>
<div>
<el-row>
<el-input v-model="input" placeholder="请输入内容"></el-input>
<el-button @click="getCookie">获取cookie</el-button>
<el-button @click="setCookie">设置cookie</el-button>
</el-row>
</div>
</template>
<script>
import {b_getCookie, b_setCookie} from "../utils/cookie";
export default {
name: "Test",
data() {
return {
input: ''
}
},
methods: {
getCookie() {
console.log("==========获取cookie===========")
let username = b_getCookie("username")
let password = b_getCookie("password")
console.log(username);
console.log(password);
},
setCookie() {
console.log("设置cookie");
b_setCookie("c_key", "c_value", 30)
}
}
}
</script>
<style scoped>
</style>
<p><h3>文章目录</h3><ul><ul><li><a href="#1__1">1 介绍</a></li><li><a href="#2_utils_4">2 utils</a></li><li><a href="#3_Testvue_52">3 Test.vue</a></li></ul></ul></p>
<h2><a id="1__1"></a>1 介绍</h2>
<p>在vue中通常使用axios进项http请求,但是axios不带cookie,这里可自己获取cookie,放到参数中进行登录验证等,方法不唯一。</p>
<h2><a id="2_utils_4"></a>2 utils</h2>
<p><code>cookie.js</code></p>
<pre><div class="hljs"><code class="lang-javascript"><span class="hljs-comment">/**
* 读取cookie,
* 需要注意的是cookie是不能存中文的,如果需要存中文,解决方法是后端先进行编码encode(),
* 前端取出来之后用decodeURI('string')解码。(安卓可以取中文cookie,IOS不行)
* */</span>
<span class="hljs-keyword">export</span> <span class="hljs-keyword">const</span> <span class="hljs-title function_">b_getCookie</span> = (<span class="hljs-params">c_name</span>) => {
<span class="hljs-keyword">var</span> name = c_name + <span class="hljs-string">"="</span>;
<span class="hljs-keyword">var</span> ca = <span class="hljs-variable language_">document</span>.<span class="hljs-property">cookie</span>.<span class="hljs-title function_">split</span>(<span class="hljs-string">';'</span>);
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">var</span> i = <span class="hljs-number">0</span>; i < ca.<span class="hljs-property">length</span>; i++) {
<span class="hljs-keyword">var</span> c = ca[i];
<span class="hljs-keyword">while</span> (c.<span class="hljs-title function_">charAt</span>(<span class="hljs-number">0</span>) == <span class="hljs-string">' '</span>) c = c.<span class="hljs-title function_">substring</span>(<span class="hljs-number">1</span>);
<span class="hljs-keyword">if</span> (c.<span class="hljs-title function_">indexOf</span>(name) != -<span class="hljs-number">1</span>) {
<span class="hljs-keyword">return</span> c.<span class="hljs-title function_">substring</span>(name.<span class="hljs-property">length</span>, c.<span class="hljs-property">length</span>);
}
}
<span class="hljs-keyword">return</span> <span class="hljs-string">""</span>;
}
<span class="hljs-comment">/**
* 设置cookie
* c_name: cookie的名字,
* value : cookie值,
* expiredays: 过期时间(天数)
* */</span>
<span class="hljs-keyword">export</span> <span class="hljs-keyword">const</span> <span class="hljs-title function_">b_setCookie</span> = (<span class="hljs-params">c_name, value, expiredays</span>) => {
<span class="hljs-keyword">var</span> exdate = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>();
exdate.<span class="hljs-title function_">setDate</span>(exdate.<span class="hljs-title function_">getDate</span>() + expiredays);
<span class="hljs-variable language_">document</span>.<span class="hljs-property">cookie</span> = c_name + <span class="hljs-string">"="</span> + <span class="hljs-built_in">escape</span>(value) + ((expiredays == <span class="hljs-literal">null</span>) ? <span class="hljs-string">""</span> : <span class="hljs-string">";expires="</span> + exdate.<span class="hljs-title function_">toGMTString</span>());
}
<span class="hljs-comment">/**
* 删除cookie
* c_name: cookie的名字,
* */</span>
<span class="hljs-keyword">export</span> <span class="hljs-keyword">const</span> <span class="hljs-title function_">b_delCookie</span> = (<span class="hljs-params">c_name</span>) => {
<span class="hljs-keyword">var</span> exp = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>();
exp.<span class="hljs-title function_">setTime</span>(exp.<span class="hljs-title function_">getTime</span>() - <span class="hljs-number">1</span>);
<span class="hljs-keyword">var</span> cval = <span class="hljs-title function_">getCookie</span>(c_name);
<span class="hljs-keyword">if</span> (cval != <span class="hljs-literal">null</span>)
<span class="hljs-variable language_">document</span>.<span class="hljs-property">cookie</span> = c_name + <span class="hljs-string">"="</span> + cval + <span class="hljs-string">";expires="</span> + exp.<span class="hljs-title function_">toGMTString</span>();
}
</code></div></pre>
<h2><a id="3_Testvue_52"></a>3 Test.vue</h2>
<pre><div class="hljs"><code class="lang-html"><span class="hljs-tag"><<span class="hljs-name">template</span>></span>
<span class="hljs-tag"><<span class="hljs-name">div</span>></span>
<span class="hljs-tag"><<span class="hljs-name">el-row</span>></span>
<span class="hljs-tag"><<span class="hljs-name">el-input</span> <span class="hljs-attr">v-model</span>=<span class="hljs-string">"input"</span> <span class="hljs-attr">placeholder</span>=<span class="hljs-string">"请输入内容"</span>></span><span class="hljs-tag"></<span class="hljs-name">el-input</span>></span>
<span class="hljs-tag"><<span class="hljs-name">el-button</span> @<span class="hljs-attr">click</span>=<span class="hljs-string">"getCookie"</span>></span>获取cookie<span class="hljs-tag"></<span class="hljs-name">el-button</span>></span>
<span class="hljs-tag"><<span class="hljs-name">el-button</span> @<span class="hljs-attr">click</span>=<span class="hljs-string">"setCookie"</span>></span>设置cookie<span class="hljs-tag"></<span class="hljs-name">el-button</span>></span>
<span class="hljs-tag"></<span class="hljs-name">el-row</span>></span>
<span class="hljs-tag"></<span class="hljs-name">div</span>></span>
<span class="hljs-tag"></<span class="hljs-name">template</span>></span>
</code></div></pre>
<pre><div class="hljs"><code class="lang-javascript"><script>
<span class="hljs-keyword">import</span> {b_getCookie, b_setCookie} <span class="hljs-keyword">from</span> <span class="hljs-string">"../utils/cookie"</span>;
<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> {
<span class="hljs-attr">name</span>: <span class="hljs-string">"Test"</span>,
<span class="hljs-title function_">data</span>(<span class="hljs-params"></span>) {
<span class="hljs-keyword">return</span> {
<span class="hljs-attr">input</span>: <span class="hljs-string">''</span>
}
},
<span class="hljs-attr">methods</span>: {
<span class="hljs-title function_">getCookie</span>(<span class="hljs-params"></span>) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">"==========获取cookie==========="</span>)
<span class="hljs-keyword">let</span> username = <span class="hljs-title function_">b_getCookie</span>(<span class="hljs-string">"username"</span>)
<span class="hljs-keyword">let</span> password = <span class="hljs-title function_">b_getCookie</span>(<span class="hljs-string">"password"</span>)
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(username);
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(password);
},
<span class="hljs-title function_">setCookie</span>(<span class="hljs-params"></span>) {
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">"设置cookie"</span>);
<span class="hljs-title function_">b_setCookie</span>(<span class="hljs-string">"c_key"</span>, <span class="hljs-string">"c_value"</span>, <span class="hljs-number">30</span>)
}
}
}
</script>
<span class="language-xml"><span class="hljs-tag"><<span class="hljs-name">style</span> <span class="hljs-attr">scoped</span>></span>
<span class="hljs-tag"></<span class="hljs-name">style</span>></span></span>
</code></div></pre>
留言