我正在运行以下代码:
from flask import Flask, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/test', methods=['POST'])
def test():
return jsonify({'result': 'hello'}), 201
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
尝试打开以下页面时,出现错误消息:
' Access-Control-Allow-Origin'标头的值为' null'那是 不等于提供的原产地。起源' null'因此不是 允许访问。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
</head>
<body>
<script>
function func() {
$.ajax({
url: "http://0.0.0.0:5000/test",
method: "POST",
contentType: "application/json"
});
}
window.onload = func
</script>
</body>
</html>
这不适用于Chrome 64.有谁知道这是为什么?
答案 0 :(得分:1)
不需要在Web服务器中安装本地文件的替代解决方案可以通过CORS允许跨源来完成。 (如果您需要多个本地文件,则很有用 - 例如链接javascript / css文件)。
只需更换一行:
CORS(APP)
通过
CORS(app,send_wildcard = True)
有关详细信息,请参阅CORS API doc
答案 1 :(得分:0)
我猜你正在浏览file://
域上的测试页面(而不是通过HTTP) - file://
资源对CORS的支持有限。
如果您在Web服务器上浏览测试页,则CORS按预期工作。例如,您可以运行这样的命令来启动一个简单的PHP Web服务器:
php -S localhost:5001 ./test.html
然后通过网址http://localhost:5001/