繁体   English   中英

CORS GCP Cloud Run 后端 Flask 错误和 Angular

[英]CORS Error in Flask Backend on GCP Cloud Run and Angular

我正在开发一个仪表板,前端为 Angular,后端为 MySQL 和 Flask。我已经在 CloudSQL 上部署了数据库,在 GCP Cloud Run 上部署了 Flask 后端。 在我的本地计算机上生产期间,我遇到了这个错误:

对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”header。

我通过在本地将以下代码添加到我的 flask 后端来修复它:

from flask_cors import CORS
CORS(app, resources={r"*": {"origins": "*"}})

我还在 flask 上的每个 function 之前尝试使用以下代码,它似乎在本地计算机上完美运行:

from flask_cors import cross_origin
@app.route('/api/register_smartbox', methods=['POST'])
@cross_origin()
def register_smartbox():
    recv_req = request.get_json()

主要问题发生在我将它部署到 GCP Cloud run 上时。 我在那里使用经过身份验证的调用 以下是我在 Angular 应用程序中从浏览器发送 API 请求时在云运行日志中获得的日志:

警告 2022-02-24T06:14:41.430198ZOPTIONS4030 B0 msChrome 98 https://<My_URL>.app/api/login_users 请求未通过身份验证。 允许未经身份验证的调用或设置正确的授权 header。在 https 阅读更多内容://cloud.google.com/run/docs/securing/authenticating可以在以下位置找到其他故障排除文档: https://cloud.google.com/run /docs/troubleshooting#unauthorized-client

这是我在浏览器中遇到的错误

从来源“http://127.0.0.1:5555”访问位于“https://<My_URL>.app/api/login_users”的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查: 请求的资源上不存在“Access-Control-Allow-Origin”header。

到目前为止我尝试过的事情:

  1. 在 Flask 中添加了所有可能的 CORS 技术
  2. 在 Cloud Run 上部署后,使用 POSTMAN 和 python 请求检查了我的 API,它似乎运行良好
  3. 尝试构建我的 angular 应用程序的生产版本,以检查该方面是否存在问题。 还包括“凭证”header:
 const headers = {"Content-Type": "application/json", 'Authorization': this.auth_tok, "credentials": 'include'}
  1. 使用 CURL 和 NodeJS 尝试部署的 GCP 服务。 也与那些人一起工作。 因此只有 Angular 应用程序上的浏览器才会出现问题。

几天来我一直被这个问题困扰。 任何形式的帮助将不胜感激。 谢谢

经过身份验证的调用不适用于 CORs 请求,因为您的 web 浏览器在向您的服务发出预检请求时未发送所需的身份验证令牌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM