解决 vue axios 带 header 时,会默认发起 OPTIONS 请求的方法的问题

This commit is contained in:
YunaiV
2019-03-27 19:12:12 +08:00
parent 42b11e377e
commit c23eb737f0
10 changed files with 182 additions and 17 deletions

View File

@@ -71,5 +71,33 @@ export function ExchangeCoupon(code){
})
}
export function getUserInfo() {
return request({
url: 'user-api/users/user/info',
method: 'get',
headers: {
test: 1,
}
});
}
export function doPassportMobileRegister(mobile, code) {
return request({
url: 'user-api/users/passport/mobile/register',
method: 'post',
params: {
mobile,
code,
}
});
}
export function doPassportMobileSendRegisterCode(mobile) {
return request({
url: 'user-api/users/passport/mobile/send_register_code',
method: 'post',
params: {
mobile,
}
});
}

View File

@@ -18,6 +18,10 @@ if (process.env.NODE_ENV == 'development') {
baseUrl = '';
}
baseUrl = 'http://127.0.0.1';
dataSources = 'remote';
// dataSources = 'local';
export {
baseUrl,
routerMode,

View File

@@ -1,11 +1,14 @@
import axios from 'axios'
import {baseUrl, dataSources} from './env';
import datas from '../data/data';
import { getAccessToken } from '../utils/cache.js';
const service = axios.create({
baseURL: baseUrl, // api 的 base_url
timeout: 5000, // request timeout
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
});
const servicef = function (parameter) {
@@ -21,6 +24,15 @@ const servicef = function (parameter) {
})
return promist;
}
// 设置 access token
// debugger;
// if (getAccessToken()) {
// parameter.headers = {
// ...parameter.headers,
// 'Authorization': `Bearer ${getAccessToken()}`,
// };
// }
// debugger;
return service(parameter);
}
@@ -33,6 +45,11 @@ service.interceptors.request.use(
// config.headers['X-Token'] = getToken()
// }
debugger;
if (getAccessToken()) {
config.headers['Authorization'] = `Bearer ${getAccessToken()}`;
}
return config
},
error => {

View File

@@ -82,21 +82,32 @@
</template>
<script>
import { GetUserIndex } from "../../api/user.js";
// import { GetUserIndex } from "../../api/user.js";
import { getAccessToken } from '../../utils/cache.js';
import { getUserInfo } from '../../api/user.js';
export default {
data(){
return{
data:{}
data: {},
user: {},
}
},
components: {
},
created:function(){
GetUserIndex().then(response=>{
this.data=response;
});
// GetUserIndex().then(response=>{
// this.data=response;
// });
},
mounted() {
if (getAccessToken()) { // 存在
let response = getUserInfo();
response.then(data => {
this.user = data;
});
}
}
};
</script>

View File

@@ -3,10 +3,10 @@
<headerNav title="账号管理"/>
<van-cell-group>
<van-cell title="修改个人信息" is-link />
<van-cell title="修改登录密码" is-link />
<van-cell title="修改绑定手机" is-link />
<van-cell title="关联账号" is-link />
<van-cell title="切换账号" is-link to="/login" />
<!--<van-cell title="修改登录密码" is-link />-->
<!--<van-cell title="修改绑定手机" is-link />-->
<!--<van-cell title="关联账号" is-link />-->
<!--<van-cell title="切换账号" is-link to="/login" />-->
</van-cell-group>
</div>
</template>
@@ -19,4 +19,4 @@ export default {
<style>
</style>
</style>

View File

@@ -0,0 +1,46 @@
/* eslint-disable */
// localStorage 操作
const cacheKeys = {
accessTokenKey: 'accessToken',
refreshTokenKey: 'refreshToken',
};
///
/// 设置 loginToken分为 accessToken 和 refreshToken
export function setLoginToken(accessToken, refreshToken) {
setLocalStorage(cacheKeys.accessTokenKey, accessToken);
setLocalStorage(cacheKeys.refreshTokenKey, refreshToken);
}
export function getLoginToken() {
const res = {};
res[cacheKeys.accessTokenKey] = getLocalStorage(cacheKeys.accessTokenKey);
res[cacheKeys.refreshTokenKey] = getLocalStorage(cacheKeys.refreshTokenKey);
return res;
}
export function getAccessToken() {
return getLocalStorage(cacheKeys.accessTokenKey);
}
///
/// 设置 localStorage 公共方法
function setLocalStorage(key, value) {
try {
localStorage.setItem(key, value);
} catch (e) {
throw new Error(`localStorage 设置错误! ${e}`);
}
}
function getLocalStorage(key) {
try {
return localStorage.getItem(key);
} catch (e) {
throw new Error(`localStorage 获取错误! ${e}`);
}
}