当前位置:   article > 正文

vue项目部署到Gitee Pages,接口出现403处理_gitee pages post

gitee pages post

使用vuecli创建项目之后,目录大概如下

 接口需要安装axios

  1. npm i axios -S
  2. // or
  3. cnpm i axios -S

 还有安装qs

  1. npm i qs -S
  2. // or
  3. cnpm i qs -S

package.json文件:

  1. {
  2. "name": "amazon",
  3. "version": "0.1.0",
  4. "private": true,
  5. "scripts": {
  6. "serve": "vue-cli-service serve",
  7. "build": "vue-cli-service build"
  8. },
  9. "dependencies": {
  10. "axios": "^0.26.1",
  11. "element-ui": "^2.15.6",
  12. "qs": "^6.11.0",
  13. "vue": "^2.6.11",
  14. "vue-router": "^3.2.0",
  15. "vuex": "^3.4.0"
  16. },
  17. "devDependencies": {
  18. "@vue/cli-plugin-router": "~5.0.0",
  19. "@vue/cli-plugin-vuex": "~5.0.0",
  20. "@vue/cli-service": "~5.0.0",
  21. "sass": "^1.32.7",
  22. "sass-loader": "^12.0.0",
  23. "vue-template-compiler": "^2.6.14"
  24. },
  25. "browserslist": [
  26. "> 1%",
  27. "last 2 versions",
  28. "not dead"
  29. ]
  30. }

在src目录下新建2个文件夹,api、utils。然后如果没有vue.config.js这个文件,就自己创建一个

新建文件夹之后目录如下:

在api文件夹里面创建一个index.js,

在utils文件夹里面创建2个文件,分别是base.js、http.js

api文件夹里面的index.js主要是放接口,参考如下(包含get、post请求):

  1. import axios from '../utils/http.js'
  2. import QS from 'qs'
  3. import base from '../utils/base.js'
  4. // /**
  5. // * post方法,对应post请求
  6. // * @desc注册请求
  7. // * @param {String} url [请求的url地址]
  8. // * @param {Object} params [请求时携带的参数]
  9. // */
  10. //登录
  11. export function login(data) {
  12. return axios({
  13. url: `${base.url}/users/login`,
  14. method: 'post',
  15. data: QS.stringify(data)
  16. })
  17. }
  18. // 获取菜单
  19. export function cd(data) {
  20. return axios({
  21. url: `${base.url}/cd/cd`,
  22. method: 'get',
  23. data: QS.stringify(data)
  24. })
  25. }

base.js     请求接口域名

  1. //请求接口域名统一管理
  2. const base = {
  3. url:'https://你的接口域名/api',
  4. //比如你的登录接口是https://www.website.com/index.php/api/login
  5. //那么你的url应该就是https://www.website.com/index.php/api
  6. //然后接口处理去api里面添加 /login 接口
  7. }
  8. export default base

 http.js     封装axios

  1. import axios from 'axios'
  2. import router from '../router/index.js'
  3. // axios.interceptors.request.use(config => {
  4. // console.log(config)
  5. // config.headers.Authorization = window.localStorage.getItem('token');
  6. // return config;
  7. // })
  8. // 请求拦截
  9. axios.interceptors.request.use(
  10. (confing) => {
  11. //设置请求头
  12. if (localStorage.getItem('token')) {
  13. // 每次除了登录的时候其他情况下发起请求的时候都携带token - 因为其他接口
  14. confing.headers['token'] = localStorage.getItem('token');
  15. }
  16. // console.log(confing);
  17. return confing
  18. },
  19. (error) => {
  20. return Promise.reject(error)
  21. }
  22. )
  23. //响应拦截
  24. axios.interceptors.response.use(
  25. (response) => {
  26. // console.log(response);
  27. //401代码
  28. // if (response.data.code === 401) {
  29. // console.log('登录过期了');
  30. // // localStorage.removeItem('token');
  31. // // localStorage.removeItem('subject_name');
  32. // localStorage.clear();
  33. // Toast(response.data.msg);
  34. // router.push('/')
  35. // }
  36. //466代码
  37. if (response.data.code === 466) {
  38. console.log('登录过期了');
  39. // alert('登录过期');
  40. // localStorage.removeItem('token');
  41. // localStorage.removeItem('subject_name');
  42. localStorage.clear();
  43. // Toast(response.data.msg);
  44. router.push('/login')
  45. }
  46. return response
  47. },
  48. (error) => {
  49. // 获取状态码
  50. const { status } = error.response
  51. //401之前的代码
  52. // if (status === 401) {
  53. // // Message.error('请重新登录')
  54. // Toast(error.response.msg);
  55. // //清楚token
  56. // // localStorage.removeItem('token')
  57. // //跳转到登录页面
  58. // // router.push('/')
  59. // }
  60. //466的代码
  61. if (status === 466) {
  62. // Message.error('请重新登录')
  63. Toast(error.response.msg);
  64. //清楚token
  65. // localStorage.removeItem('token')
  66. //跳转到登录页面
  67. // router.push('/')
  68. }
  69. return Promise.reject(error)
  70. }
  71. )
  72. export default axios

接下来设置vue.config.js(项目没有就自己创建)

vue.config.js里面设置部署gitee仓库名

  1. //vue-background是我的仓库名 切换成你自己就行
  2. const BASE_URL = process.env.NODE_ENV === 'production' ? "/schoolwork/" : '/';
  3. module.exports = {
  4. publicPath: BASE_URL,
  5. }

vue.config.js设置好就进行打包,

npm run build

部署到gitee pages上就能正常使用了。

因为我只是写了个登录页面,没有注册页面,就单独调用下登录接口来测试,网址在下行。(我在数据库放了个账号名:admin     密码:123456  供测试)

在线测试网址:amazon (gitee.io)

还要注意你的网址是否是https还是http,建议尽量和gitee使用相同的,gitee用的https,那么接口尽量也是https的,减少出错的可能。

注:因为是vue项目部署到gitee,gitee域名请求接口不同所以需要进行接口封装。如果是有自己的服务器,放自己网站上,可直接用axios部署就行,就可跳过api、utils这2个文件夹的操作

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号