烧瓶 Cors 不工作
Posted
技术标签:
【中文标题】烧瓶 Cors 不工作【英文标题】:Flask Cors isn't working 【发布时间】:2016-04-18 16:03:26 【问题描述】:我正在尝试在我的 Flask 应用程序中启用 CORS,但似乎我总是可以从浏览器访问我的网址,无论我在源中放置什么。
我不知道我做错了什么。这是我的代码
from flask import Flask, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app, resources=r'/*': 'origins': 'www.examplesite.com')
@app.route('/reports', methods=['GET', 'POST'])
def index(id=None):
return jsonify(success=True), 200
【问题讨论】:
您的意思是您尝试从 www.examplesite.com 以外的网址访问它? 是的,它有效。看来我的CORS配置没有效果 你能准确地说出你在做什么吗?您正在访问的端点是什么,从哪个域以及如何访问? 我正在尝试仅从特定域访问 API 以增加一些安全性。但似乎不起作用。我可以毫无问题地在本地访问它。我部署了它,然后从我的浏览器再次尝试,它也有效。似乎 CORS 恢复为“*”,这是默认值。 【参考方案1】:你有两个问题:
-
提供给资源的键必须是有效的 Python 正则表达式,根据 Flask-CORS documentation - 使用
/.*
而不是 /*
来匹配根 /
下的任何内容,而不是任何仅包含斜杠的路径(这就是/*
的意思)。
根据the W3C's specification for CORS,返回的原点应该是与RFC 6454 Section 7.1 中描述的语法相匹配的完全限定URI。 www.example.com
不是完全限定的 URI,因为它没有方案。请改用https://www.example.com
或http://www.example.com
。或者,您可以使用正则表达式告诉 Flask-CORS 仅匹配 origins
中的一个条目。
【讨论】:
我按照你说的做了,还是没有效果。就像应用根本看不到 CORS 并使用默认值一样。 同样的问题以上是关于烧瓶 Cors 不工作的主要内容,如果未能解决你的问题,请参考以下文章
Python 烧瓶、apache 和 mod_wsgi 应用程序不工作