Flask 使用 CORS 服务静态文件夹
Flask serving static folder with CORS
在我的前端应用程序中,我试图访问我在静态文件夹中提供的文件,但我遇到了 CORS 问题。我遇到的问题是
Access to XMLHttpRequest at 'http://127.0.0.1:5000/static_folder/apple.xml' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我的后端 Flask 应用程序具有以下设置
app = Flask(__name__, static_url_path='/static_folder', static_folder="static_folder")
似乎我需要在返回文件时将 'Access-Control-Allow-Origin' header 添加到我的回复中。 Flask 是否有全局方式来设置它?
我试过使用 flask_cors
但没有成功使用
from flask_cors import CORS, cross_origin
app = Flask(__name__, static_url_path='/static_folder', static_folder="static_folder")
CORS(app)
通过将 CORS header 设置为
,我能够使用 SimpleHTTPRequestHandler
获得类似的效果
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
但我想使用 flask 来完成此任务,而不是启动一个简单的 http 服务器。
在 cors(app) 之后添加这些行:
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Headers', 'Content-Type, Authorization')
response.headers.add('Access-Control-Allow-Methods', 'GET, POST, PATCH, DELETE, OPTIONS')
return response
此外,如果使用 flask-cors 包,您应该能够覆盖您的静态请求:
from flask import Flask
from flask_cors import CORS
# Initialize
app = Flask(__name__)
cors = CORS(app, resources={r"/static/*": {"origins": "*"}})
祝你好运!
在我的前端应用程序中,我试图访问我在静态文件夹中提供的文件,但我遇到了 CORS 问题。我遇到的问题是
Access to XMLHttpRequest at 'http://127.0.0.1:5000/static_folder/apple.xml' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我的后端 Flask 应用程序具有以下设置
app = Flask(__name__, static_url_path='/static_folder', static_folder="static_folder")
似乎我需要在返回文件时将 'Access-Control-Allow-Origin' header 添加到我的回复中。 Flask 是否有全局方式来设置它?
我试过使用 flask_cors
但没有成功使用
from flask_cors import CORS, cross_origin
app = Flask(__name__, static_url_path='/static_folder', static_folder="static_folder")
CORS(app)
通过将 CORS header 设置为
,我能够使用SimpleHTTPRequestHandler
获得类似的效果
def end_headers (self):
self.send_header('Access-Control-Allow-Origin', '*')
SimpleHTTPRequestHandler.end_headers(self)
但我想使用 flask 来完成此任务,而不是启动一个简单的 http 服务器。
在 cors(app) 之后添加这些行:
@app.after_request
def after_request(response):
response.headers.add('Access-Control-Allow-Headers', 'Content-Type, Authorization')
response.headers.add('Access-Control-Allow-Methods', 'GET, POST, PATCH, DELETE, OPTIONS')
return response
此外,如果使用 flask-cors 包,您应该能够覆盖您的静态请求:
from flask import Flask
from flask_cors import CORS
# Initialize
app = Flask(__name__)
cors = CORS(app, resources={r"/static/*": {"origins": "*"}})
祝你好运!