Vue(Vue Element Admin)+Apache+thinkphp6项目,解决跨域问题;

这篇具有很好参考价值的文章主要介绍了Vue(Vue Element Admin)+Apache+thinkphp6项目,解决跨域问题;。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue+Apache+PHP+docker跨域问题解决方案

架构说明

前端:

vue2的框架,在github上找的。 Vue Element Admin框架。

后端:

thinkphp6框架

服务器

apache

页面代码展示

vue框架,本身封装了axios请求,框架本身还自带mock;

我直接在这个基础上开发,写了1个demo.vue的页面,对应demo.js文件封装api;

vue文件如下

<template>
<div>
    请求POST接口返回的结果是:{{ res.api1 }}
    </div>
</template>

<script>
    import { AddUserInfo } from '@/api/attendance_statistics'

    export default {
        data() {
            return {
                res: { api1: null }
            }
        },
        created() {
            this.fetchData()
        },
        methods: {
            fetchData() {
                const userInfo = {
                    name: 'John Doe',
                    name2: 'John Doe'
                }

                AddUserInfo(userInfo)
                    .then(response => {
                    console.log(response.data)
                    this.res.api1 = response
                })
                    .catch(error => {
                    console.log('error1111', error)
                })
            }
        }
    }
</script>

js文件如下

import apiClient from '@/utils/request'


export async function GetUserList() {
    // eslint-disable-next-line no-useless-catch
    try {
        const response = await apiClient.get('/demo/testApi')
        return response.data
    } catch (error) {
        throw error
    }
}

export async function AddUserInfo(userInfo) {
    // eslint-disable-next-line no-useless-catch
    try {
        const response = await apiClient.post('/demo/testAdd', JSON.stringify(userInfo))
        return response.data
    } catch (error) {
        throw error
    }
}

baseurl

通过阅读自带的请求类封装的代码发现,baseurl是VUE_APP_BASE_API控制的。于是就找到.env.development文件

修改baseurl

# just a flag
ENV = 'development'

# base api,真实腾讯云服务器绑定的域名。
VUE_APP_BASE_API = 'http://pmadmin.xxxx.icu/'

发送请求

我在vue页面刷新,生命周期会 自动发送api,果然就报错了。弄了大半天,还找了淘宝的技术员,没搞定,控制台一直报错说跨域问题。

干脆复制错误去百度

解决步骤

说服务器端Header always set Access-Control-Allow-Origin设置错误,我改成了

Header always set Access-Control-Allow-Origin "*"

我在请求拦截器里设置的是token, config.headers[‘Token’] 。

// request interceptor
service.interceptors.request.use(
    config => {
        // do something before request is sent

        if (store.getters.token) {
            // let each request carry token
            // ['X-Token'] is a custom headers key
            // please modify it according to the actual situation
            config.headers['Token'] = getToken()
        }

        return config
    },
    error => {
        // do something with request error
        console.log(error) // for debug
        return Promise.reject(error)
    }
)

控制台报错说我Token头信息不被服务器接纳。那服务器再设置

Header always set Access-Control-Allow-Headers "Content-Type,token"

完整解决方案

后端站点的conf文件内配置跨域

<VirtualHost *:80>
    ServerName pmadmin.xxxxxxx.icu
    DocumentRoot /usr/local/apache2/wwwv2/pm-admin/public

    # 添加跨域配置
    Header always set Access-Control-Allow-Origin "*"
    Header always set Access-Control-Allow-Methods "GET, POST, OPTIONS"
    Header always set Access-Control-Allow-Headers "Content-Type,token"

    <Directory /usr/local/apache2/wwwv2/pm-admin/public>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
        DirectoryIndex index.php
    </Directory>
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://dnmp_php74:9000/usr/local/apache2/wwwv2/pm-admin/public/$1
    ProxyPassReverse / fcgi://dnmp_php74:9000/usr/local/apache2/wwwv2/pm-admin/public/
</VirtualHost>

总结

就算是控制台报了跨域错误,也要分析具体错误是什么原因导致的。不同的跨域错误,有不同的解决方案;

  • 来源地址不被接受
  • 请求头内的参数不被接受

欢迎补充!文章来源地址https://www.toymoban.com/news/detail-482926.html

到了这里,关于Vue(Vue Element Admin)+Apache+thinkphp6项目,解决跨域问题;的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Thinkphp6项目在虚拟机无法指向pulic的目录访问的方法

    以阿里云虚拟主机为例,服务器环境为 LAMP,Apache2.4 + php7.2 + mysql5.7 1.根目录新建 index.php 文件,将以下内容放入文件中 2.将 public 目录下的 admin.php、backend 文件夹、static 文件夹、tinymce 文件夹移动至根目录,移动好之后如下图所示  3.根目录新建.htaccess 文件,将以下内容放入

    2024年02月06日
    浏览(39)
  • 基于ThinkPHP6.0+Vue+MySQL的单商户SaaS商城系统

    单商户SaaS商城系统是一种面向单个商户的软件即服务(SaaS)解决方案,用于构建和管理商户的网上商城。它提供一个完整的商城平台,可以帮助商户构建、管理和优化在线商城,并通过强大的数据分析功能,使商户可以更好地了解客户行为,从而提高销售效率。单商户SaaS商

    2024年02月13日
    浏览(35)
  • 虚拟机Ubuntu下运行vue-element-admin项目

    首先附上vue-element-admin项目的相关介绍链接 介绍 | vue-element-admin (gitee.io) 一.环境搭建 1.安装nodejs 安装完成后,查看对应的版本号 没有问题,会输出对应版本号,我这里是10.19.0 2.安装npm 安装完成查看对应的版本号,确认OK 我这里是版本是6.14.4 3.安装Vue 同样查看一下版本号确

    2024年02月07日
    浏览(42)
  • Vue-Element-Admin项目学习笔记(6)Vuex状态管理

    前情回顾: vue-element-admin项目学习笔记(1)安装、配置、启动项目 vue-element-admin项目学习笔记(2)main.js 文件分析 vue-element-admin项目学习笔记(3)路由分析一:静态路由 vue-element-admin项目学习笔记(4)路由分析二:动态路由及permission.js vue-element-admin项目学习笔记(5)路由分析

    2024年02月09日
    浏览(49)
  • vue-element-admin - 超详细克隆并运行项目教程,完美解决 git clone 克隆项目失败、npm install 装包报错失败、项目运行后打开是英文的汉化等问题(新手小白一看就懂)

    网上的教程都太乱了,大部分最终都无法成功克隆项目并运行起来。 本文站在 新手小白的角度,从 0-1 克隆项目(完美解决了克隆失败的问题)、npm install 装包并配置运行起来,以及界面是英文的汉化等一系列的问题, 您可以按照本文的教程,轻松完成 vue-element-admin 该框架

    2024年02月09日
    浏览(71)
  • Vue-element-admin项目中完全移除ES lint

    由于不需要用到eslint,因此需要完全移除此插件,过程如下: 在项目根目录下,执行以下命令,卸载与 ESLint 相关的依赖包: npm uninstall @vue/cli-plugin-eslint lint-staged husky eslint babel-eslint eslint-config-standard eslint-friendly-formatter eslint-loader eslint-plugin-html eslint-plugin-promise eslint-plugin-s

    2024年02月07日
    浏览(62)
  • 基于ThinkPHP6.0+Vue+uni-app的多商户商城系统好用吗?

    likeshop多商户商城系统适用于B2B2C、多商户、商家入驻、平台商城场景。完美契合平台+自营+联营+加盟等多种经营方式使用,系统拥有丰富的营销玩法,强大的分销能力,支持官方旗舰店,商家入驻,平台抽佣+商家独立结算,统一下单+订单拆分。无论是运营还是二开都是性价

    2024年02月07日
    浏览(55)
  • thinkphp6中使用session设置无效问题的解决及注意事项

    就如thinkphp官方在文档开头所描述的一样,ThinkPHP6.0基于精简核心和统一用法两大原则在5.1的基础上对底层架构做了进一步的优化改进,并更加规范化;其实从5.x版本开始thinkphp本身就是为api应用而生。特别是在6.0版本开始框架默认压根不开启和提供模板引擎,需要下载安装模

    2024年02月05日
    浏览(57)
  • Vue-Element-Admin项目学习笔记(9)表单组件封装,父子组件双向通信

    前情回顾: vue-element-admin项目学习笔记(1)安装、配置、启动项目 vue-element-admin项目学习笔记(2)main.js 文件分析 vue-element-admin项目学习笔记(3)路由分析一:静态路由 vue-element-admin项目学习笔记(4)路由分析二:动态路由及permission.js vue-element-admin项目学习笔记(5)路由分析

    2024年02月11日
    浏览(55)
  • 【vue-element-admin】github高质量vue项目解读,小白都能看懂(第三篇)

    日月几何,天地玄黄,今日奇观,书接上一回。 这次我们来讲 panel-group / 组件 因为本文是跟着项目来的,所以不从第一篇看起的小伙伴云里雾里,所以针对以上情况,我决定对于 vue-element-admin 项目出现的大部分技术栈以及知识点(比如:element-ui,echarts,vuex等等)进行讲解

    2024年02月02日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包