我想在我的烧瓶应用程序中设置CORS并添加烧瓶 - 助手达到某一点。而" CORS(app)"帮助了所有不需要授权的路线,我无法访问那些不需要授权的路线。
有问题的一条路线是这样的。
@users_blueprint.route('/users/<user_id>', methods=['GET'])
@authenticate
def get_single_user(resp, user_id):
response_object = {
'status': 'failure',
'message': 'Invalid Payload'
}
if resp != user_id:
response_object['message'] = 'You are not authorized to view this user'
return jsonify(response_object), 400
try:
user = User.query.filter_by(user_id=user_id).first()
if user:
response_object['status'] = 'success'
response_object['data'] = user.to_json()
return jsonify(response_object), 200
else:
response_object['message'] = 'The user does not exist'
return jsonify(response_object), 400
except (exc.IntegrityError, ValueError, TypeError) as e:
db.session().rollback()
return jsonify(response_object), 400
我玩过CORS设置,到目前为止得到了这个:
#enable CORS
CORS(app, allow_headers=["Content-Type", "Authorization", \
"Access-Control-Allow-Credentials"], supports_credentials=True)
但是当我尝试通过fetch从我的React应用程序中访问有问题的路径时,我收到此错误:
无法加载 MYROUTE:没有 &#39;访问控制允许来源&#39;标题出现在请求的上 资源。起源&#39; http://localhost:3000&#39;因此是不允许的 访问。响应具有HTTP状态代码502.如果是不透明的响应 满足您的需求,将请求模式设置为“无人”状态。去取 CORS禁用的资源。
我还能做什么?
修改
当我通过CURL发送OPTIONS请求时,我可以看到我的相关路线将以&#34; access-control-allow&#34; -headers响应。所以我对发生的事情一无所知。这也是我的获取请求:
const url = `myurlendpoint/myuserid`
const token = my_id_token
const options = {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
};
fetch(url, options)
.then(response => console.log(response.json()))
.catch(error => console.log(error))
另外:当我在没有标题的情况下拨打我的路线&#39;授权&#39;现在我得到了正确的回答说&#34;没有提供身份验证&#34;而不是跨源问题。如果这条路线确实没有交叉原点 - 允许设置那么它应该在我的请求中声明没有授权,对吧?所以它与Authorization标题有关...