我们目前在前端有一个Angular 9 GCP App Engine实例,在后端有一个Django GCP Cloud Run服务。我们希望Angular应用程序从元数据服务器查询GCP中的JWT令牌,我们将把它放在后端的每个请求的头部中。在根据this page进行查询时,我们不断得到以下“混合内容”错误。
Mixed Content: The page at {our App Engine url} was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience={audienceName}'. This request has been blocked; the content must be served over HTTPS.我们已尝试使用上述GCP元数据url的https版本,但该版本不存在。从理论上讲,我们应该能够检索这些元数据,因为GCP实例,即GCP应用程序引擎应用程序,正在与GCP计算引擎后端通信。有没有人有从UI进行此查询以获取令牌以设置后端请求的经验?
发布于 2020-08-11 03:35:48
即使你的Angular9应用程序托管在app Engine上,代码( TS代码,翻译成Javascript)也不能在App Engine上运行,但它可以在客户端浏览器上运行。
好的,你肯定知道这一点,但这将有助于我向你解释你的问题。您尝试调用内部Google URL (http://metadata.google.internal/...)。因此,您的Angular应用程序在您的用户浏览器上无法访问此API。
好的模式不是这个。您必须在后台(appEngine或其他地方,云函数或云运行)公开一个接口,接受来自您的Angular9应用程序的请求(根据您的服务要求,请求可以进行身份验证(例如使用firebase身份验证)或不进行身份验证)。
然后,托管在Google Cloud上的后端可以请求元数据服务器,然后生成一个令牌来访问其他服务。
https://stackoverflow.com/questions/63184537
复制相似问题