[flask] flask api + vue 跨域问题

Posted 影灵衣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[flask] flask api + vue 跨域问题相关的知识,希望对你有一定的参考价值。

问题

使用flask提供json数据,用vue在前端获取json数据展示。

发现无法获取到该json数据,但其它网站的api的json数据是可以拿到的。

解决

后来,查到是由于遇到跨域请求的问题,通过设置flask允许其它域访问即可。

域 = 协议名 + 主机名 + 端口号

禁止不同域的访问是为了防止CSRF(跨站请求伪造)攻击。

通过CORS(跨源资源共享)允许的请求。

添加如下语句开启允许访问的资源:

CORS(app, resources=r'/*')

示例

demo.py

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app, resources=r'/*')

@app.route('/')
def hello_world():
    return {'hello': 'world!'}

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

test.html

<div id="app">
    <h2>
        ----
        {{info}}
    </h2>
</div>

<script src="https://unpkg.com/vue"></script>

<script>
    const app = new Vue({
        el:'#app',
        data:{
            info:''
        },
        created() {
            fetch('http://127.0.0.1:5000')
            .then(response => response.json())
            .then(json => {
                this.info = json
            })
        },
    })
</script>

PS

同理,不仅是flask会出现跨域请求的问题,其它语言为了安全性,也是有禁止跨域请求的。

以上是关于[flask] flask api + vue 跨域问题的主要内容,如果未能解决你的问题,请参考以下文章

Flask restful API如何解决跨站请求问题

不需要web服务器,如何构建一个可以内部跨域的http服务(Vue+Flask)

django+vue无法设置跨域cookies

Flask & Vue 构建前后端分离的应用

Flask Vue.js全栈开发

vue-resource可以跨域直接发送POST请求吗?