当前位置: 首页 > 面试题库 >

对需要身份验证的云运行服务的Ajax请求

闻人举
2023-03-14
问题内容

我在
需要身份验证的服务上运行Google Cloud的CORS相关问题。

如果我尝试通过带有Bearer令牌的cli执行curl命令,则
一切正常。不幸的是,如果我尝试通过javascript中的ajax执行相同的调用,则会
收到403。

  const http = new XMLHttpRequest();
  const url = 'https://my-app.run.app';

  http.open("GET", url);
  http.withCredentials = true;
  http.setRequestHeader("authorization", 'Bearer ' + id_token);
  http.send();
  http.onreadystatechange = (e) => {
    console.log(http.responseText)
  }

云运行日志中的错误是这样的:

The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header. Read more at https://cloud.google.com/run/docs/securing/authenticating

容器永远不会被击中。

我看到的问题是,当我在Web
浏览器中使用Ajax拨打电话时。Web浏览器正在发出飞行前请求(
网址上的OPTIONS ),而没有发送Authorization标头(这是预期的
行为)

问题似乎是,云运行尝试对OPTIONS
请求进行身份验证,并且从未将其发送到我的容器中,据我所知,这
不应完成。(
https://www.w3.org/TR/cors/#cross-origin-request-with-
preflight-0)

那是云运行的已知问题吗?

我如何向经过身份验证的云运行服务发出ajax请求?


问题答案:

(云运行PM)

这是一个已知的问题。有几种选择:

  1. 允许未经身份验证的请求并自己进行CORS /身份验证
    1. 这有一个变体,它使用在计算之前在Cloud Run上运行的Cloud Endpoints。让端点对您的最终用户进行身份验证,然后将请求转发到您的后端。
  2. 从同一域提供服务(例如,使用Firebase托管代理)

我们已经考虑过实现IstioCORSPolicy,该方法将在auth检查之前返回CORS标头,尽管到目前为止我们尚未承诺这样做。



 类似资料:
  • 问题内容: 我想在我的Django编码网站中添加一些Ajax -niceness。 在我的Django代码中,我使用装饰器标记哪个视图需要认证。未经身份验证的用户单击时的默认行为是将其重定向到登录页面,然后传递目标页面。 我在某些网站上看到的,并且真正喜欢的是,当用户单击一个指向仅限于登录用户的位置的链接时,他/她得到了一个弹出窗口(通过JavaScript),而不是重定向到登录页面,而是询问他/

  • } 要获取令牌,我执行以下步骤: > 使用浏览器转到:http://localhost:9000/oauth/authorize?response_type=code&client_id=test&redirect_uri=http%3a%2f%2flocalhost%3a8080%2f&scope=write 首先,它将我重定向到一个登录表单,在那里我输入用户名和密码:admin abc 请帮我

  • 将配置服务器用户名和密码存储为环境变量(在客户端和服务器中)还是使用密钥库更好?密钥库密码无论如何都存储为环境变量,那么为什么实际使用密钥库呢?还是有更好的方法在SpringCloudConfig服务器中实现身份验证?

  • 问题内容: 我需要从使用客户端证书进行身份验证的服务器请求URL,但是找不到为我的应用程序执行此操作的方法。 我的问题是我正在使用的Java客户端具有本地可用的证书文件,但是由于PC的限制,它将在其上运行,因此无法在密钥库中安装证书。 简而言之,我只是希望能够明确指定要用于我要检索的URL的证书。 有什么建议? 问题答案: 目前尚不清楚您所讨论的限制是什么。更具体地说,我不确定您认为本地证书文件和

  • 我已经尝试让我的应用程序发送电子邮件超过一个小时了,我已经尝试了我在网上找到的所有东西,但我仍然得到了我的问题标题中提到的例外情况。 下面是我使用的代码: 我允许在我的帐户上访问不太安全的应用程序。我也尝试过启用2FA并生成特定于应用程序的密码,但例外情况仍然存在。

  • 问题内容: 我收到错误 NOAUTH必需的身份验证 。我的laravel版本是5.3,我正在使用predis 1.1.1连接redis。 在etc / redis / redis.conf中,我有: 在.env文件中 在config / database.php中,我有: 我通过以下方式连接redis: 并像这样使用它: 因此,当我注释掉并将密码发送为null时,它可以工作,但在密码到位后却无法工