【发布时间】:2019-12-25 06:23:21
【问题描述】:
我在部署到 Heroku 的应用程序上遇到问题。我在localhost上开发的时候没有出现这个错误,但是一部署就自发抛出这个错误:
Access to fetch at
'https://frontend.herokuapp.com' from origin
'https://backend.herokuapp.com' has been blocked
by CORS policy: No 'Access-Control-Allow-Origin' header is present
on the requested resource. If an opaque response serves your needs,
set the request's mode to 'no-cors' to fetch the resource with CORS
disabled.
我的 Flask 服务器的简化版:
from flask import Flask, request, make_response, jsonify, url_for,
redirect, render_template
from flask_cors import CORS, cross_origin
import flask
import json
app = Flask(__name__)
CORS(app)
@app.route('/api/action', methods=['GET', 'POST'])
@cross_origin()
def prescription(response={}):
# POST request
if request.method == 'POST':
print('score POST request')
response = request.get_json()
data = json.loads(response.get('data'))
rating = a_super_cool_feature
return jsonify(rating), 200
# GET request
else:
print('GET request')
return getScore(response)
@app.route('/api/score', methods=['GET', 'POST'])
@cross_origin()
def scoreHandler(response={}):
# POST request
if request.method == 'POST':
print('Incoming..')
response = request.get_json()
parseResponse(response)
return str(getScore(response)), 200
# GET request
else:
return getScore(response)
@app.route('/test')
def test_page():
# look inside `templates` and serve `index.html`
return render_template('index.html')
if __name__ == "__main__":
app.debug=True
app.run()
我的前端是一个 React 应用程序。这两个服务器在不同的 Heroku 服务器上运行,我使用的是免费版本,所以我一次只能得到一个测功机(以防这可能导致此错误)。
有趣的是:
大约有一半的时间,当在部署的 Heroku 应用程序上调用这些 POST 请求时,会抛出错误。否则,它的工作没有问题。有关解决此问题的任何想法?
【问题讨论】:
标签: reactjs heroku flask cors flask-cors