flask_cors启用后浏览器访问失效 解决方案

本文最后更新于 2023年8月22日 下午

问题分析

原flask端代码:

1
2
3
4
5
6
7
8
from flask import Flask, request
from flask_cors import CORS
app = Flask(__name__)
CORS(app)

@app.route('/execute', methods=['POST'])
def execute_code():
#logic

在使用python request库访问服务时, 一切表现良好, 但是如果使用浏览器访问, 会发现出现错误:
image.png
浏览器会在真正访问跨域资源时事先发送一个preflight请求, 而flask并不会处理这个请求, 导致404.(当你已经使用flask_cors时, 我默认你已经了解CORS)

解决方案

当我们查看preflight请求:
image.png
他使用option方法请求, 因此, 我们使用对应逻辑处理它:

1
2
3
4
5
6
7
8
9
10
from flask import Flask, request, Response
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.before_request
@app.route('/execute', methods=['POST'])
def execute_code():
if request.method.lower() == 'options':
return Response()
#logic

关于技术细节, 你可以查看:
@app.before_request


flask_cors启用后浏览器访问失效 解决方案
https://bainianlaoyao.github.io/2023/07/26/typecho-recovered-66-flask-cors启用后浏览器访问失效-解决方案/
作者
百年老妖
发布于
2023年7月26日
许可协议