赞
踩
- 前端使用Vue框架
- 后端使用Python的Flask
- Vue通过使用axios获取到后端数据
- Flask使用CORS实现跨域
<template> <el-form> <el-form-item> <el-button @click="test()">登录</el-button> <div>信息:{{ demo.msg }}</div> <div>状态码:{{ demo.status }}</div> </el-form-item> </el-form> </template> <script> import axios from 'axios' export default { name: 'Index.vue', data(){ return{ demo: '' } }, methods: { test(){ axios.post('http://127.0.0.1:5000/index') .then(res=>{ // 将返回的数据显示到demo中 this.demo = res.data; // 向控制台打印获取到的数据 console.log(res.data); }) }, } } </script> <style scoped> </style>
<template> <el-form> <el-form-item> <el-button @click="test()">点击</el-button> <div>信息:{{ demo.msg }}</div> <div>状态码:{{ demo.status }}</div> </el-form-item> </el-form> </template> <script> export default { name: 'Index.vue', data(){ return{ demo: '' } }, methods: { test(){ this.$http.post('http://127.0.0.1:5000/index') .then(res=>{ // 将返回的数据显示到demo中 this.demo = res.data; // 向控制台打印获取到的数据 console.log(res.data); }) }, } } </script> <style scoped> </style>
import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store' import './plugins/element.js' //导入字体图标 import './assets/font/iconfont.css' // 组织显示生产模式的消息 Vue.config.productionTip = false //==主要是这里== import axios from 'axios' // 挂载到vue的原型对象中 Vue.prototype.$http = axios // 创建实例 new Vue({ router, store, render: h => h(App) }).$mount('#app')
from flask import Flask, request# 跨域 from flask_cors import CORS app = Flask(__name__) CORS(app, supports_credentials=True) @app.route('/index', methods=['GET', 'POST']) def index(): success = { "status": 200, "msg": "连接成功!" } return success if __name__ == '__main__': print(app.url_map) app.run(debug=True)
test()
方法,将后端返回的数据显示到demo中<template>
<el-form>
<el-form-item>
<el-button @click="test()">点击</el-button>
<div>信息:{{ demo.msg }}</div>
<div>状态码:{{ demo.status }}</div>
</el-form-item>
</el-form>
</template>
test(){
this.$http.post('http://127.0.0.1:5000/index')
.then(res=>{
// 将返回的数据显示到demo中
this.demo = res.data;
// 向控制台打印获取到的数据
console.log(res.data);
})
},
test()
方法中,由于已经提前在main.js
中导入了axios和将axios挂载到vue的原型对象中,才能使用this.$http
来发送请求**(本次示例使用的发送请求方式)**。如下(main.js)
:...
import axios from 'axios'
// 挂载到vue的原型对象中
Vue.prototype.$http = axios
...
main.js
中导入axios,则可以直接在.vue文件中的<script></script>
标签中导入,以下为直接在文件中导入axios并发送请求<script>
import axios from 'axios'
...
test(){
axios.post('http://127.0.0.1:5000/index')
.then(res=>{
// 将返回的数据显示到demo中
this.demo = res.data;
// 向控制台打印获取到的数据
console.log(res.data);
})
},
</script>
app.py
中,先导入跨域用的CORS库# 跨域
from flask_cors import CORS
CORS(app, supports_credentials=True)
@app.route('/index', methods=['GET', 'POST'])
def index():
success = {
"status": 200,
"msg": "连接成功!"
}
return success
关于CORS跨域,有两种方式:全局跨域、指定跨域接口
from flask import Flask, request
# 跨域
from flask_cors import CORS
app = Flask(__name__)
CORS(app, supports_credentials=True)
supports_credentials
是一个布尔值类型,作用:是否允许请求发送cookie,false是不允许@cross_origin
装饰器from flask import Flask
from flask_cors import CORS, cross_origin
app = Flask(__name__)
# 只允许路径为'/index'跨域
@app.route('/index', methods=['GET', 'POST'])
def index():
success = {
"status": 200,
"msg": "连接成功!"
}
return success
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。