jsonp 使用(Flask + python)

发布时间 2023-06-21 20:16:19作者: wstong

1.web端控制台代码

const successCallback = function(data) {
    console.log(data);
}
var import_js = document.createElement('script');
import_js.setAttribute("src", "http://127.0.0.1:8000/test?username=admin&password=123456&callback=successCallback");
document.getElementsByTagName("head")[0].appendChild(import_js);

2.server端代码

from flask import Flask, request
from gevent import pywsgi
import json

app = Flask(__name__)

@app.route('/test', methods=['GET', 'POST'])
def test():
    function = request.args.get('callback')
    username = request.args.get('username')
    password = request.args.get('password')
    print(f'function: {function}')
    print(f'username: {username}')
    print(f'password: {password}')
    res = function + '(' + json.dumps({'status': 'success', 'msg': '接收成功'}) + ')'
    return res

if __name__ == '__main__':
    server = pywsgi.WSGIServer(('0.0.0.0',8000), app)
    server.serve_forever()

3.结果展示

image
image

4.注意事项

使用该方法可能会遇到该问题
image
查找资料发现有以下解决方法,我使用了第3点是可以成功的

  1. 使用Chrome低版本或其他浏览器
  2. 将网站升级为https
  3. 在Chrome浏览器地址栏搜索chrome://flags,然后在搜索框搜索Block insecure private network requests,最后将其Default改为Disabled
    image