【问题标题】:Flask serving static folder with CORS使用 CORS 提供静态文件夹的 Flask
【发布时间】:2020-05-10 01:35:32
【问题描述】:

在我的前端应用程序中,我试图访问我在静态文件夹中提供的文件,但我遇到了 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”标头添加到我的响应中。 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 标头设置为

,我能够在 SimpleHTTPRequestHandler 上获得类似的效果
def end_headers (self):
        self.send_header('Access-Control-Allow-Origin', '*')
        SimpleHTTPRequestHandler.end_headers(self)

但是我想用flask来完成这个而不是启动一个简单的http服务器。

【问题讨论】:

    标签: python flask cors static-files


    【解决方案1】:

    此外,如果使用 flask-cors 包,您应该能够覆盖您的静态请求:

    from flask import Flask
    from flask_cors import CORS
    
    # Initialize
    app = Flask(__name__)
    cors = CORS(app, resources={r"/static/*": {"origins": "*"}})
    

    祝你好运!

    【讨论】:

      【解决方案2】:

      在 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
      

      【讨论】:

      • 不幸的是仍然遇到同样的问题。
      • 您的错误是 No 'Access-Control-Allow-Origin' 所以您也应该添加这一行: response.headers.add('Access-Control-Allow-Origin', '*')
      • 我尝试在上面添加response.headers.add('Access-Control-Allow-Origin', '*'),但没有成功。我试图卷曲静态文件,但似乎没有正确应用标题
      • 这应该将所有添加到来源,将 CORS(app) 更改为此 CORS(app, resources={r"/api/*": {"origins":"*"}})
      • 并删除 response.headers.add('Access-Control-Allow-Origin', '*')
      猜你喜欢
      • 2022-01-03
      • 2019-09-19
      • 2021-05-03
      • 2014-06-06
      • 2023-03-06
      • 1970-01-01
      • 2017-05-19
      • 2012-07-14
      • 2015-10-19
      相关资源
      最近更新 更多