当前位置: 首页 > 知识库问答 >
问题:

CORS Google Cloud-Axios选项中的授权头

李星辰
2023-03-14

CORS策略阻止从来源'https:// '访问位于'https:// '的XMLHttpRequest:对飞行前请求的响应未通过访问控制检查:请求的资源上没有'access-control-allog-origin'标头。

  1. 如果我从本地前端(也是浏览器)访问本地后端,它会工作:上面的错误不会显示在浏览器控制台中,我会获得数据)。
  2. 如果我做了这些选项或接到邮递员的电话到Google Cloud后端,它就有效了。

我注意到,对于Postman,我需要在OPTIONS请求中包含Authorization标头,以便将承载令牌发送到Google以使其工作。浏览器不会在选项调用中发送任何Authorization标头,即使我将With Credentials:true添加到Axios配置中,如下所示:

const response = await axios({
      method: 'post',
      withCredentials: true,
      url: 'https://<backend>',
      headers: {
        'Authorization': 'Bearer ' + gCloudToken
      },
      data: {
        // data...
      }
    });
  1. 发送标头中的令牌不是一个安全问题吗?我的意思是,每个人都可以看到头部,然后伪造对服务器的调用。
  2. 有人能说明如何通过Axios在选项调用中发送授权标头或告诉如何正确处理此问题吗?

更新1:

来自浏览器的请求如下所示:

OPTIONS /path/to/api HTTP/2
Host: <backend>-ew.a.run.app
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Access-Control-Request-Method: POST
Access-Control-Request-Headers: authorization,content-type
Referer: https://frontend.web.app/
Origin: https://frontend.web.app
Connection: keep-alive
HTTP/2 403 Forbidden
date: Tue, 07 Jul 2020 23:57:27 GMT
content-type: text/html; charset=UTF-8
server: Google Frontend
content-length: 320
alt-svc: h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-25=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
X-Firefox-Spdy: h2

如您所见,没有CORS头(例如access-control-allog-origin)。

共有1个答案

籍兴文
2023-03-14

该问题的原因是由于不允许未经身份验证的调用,所以CORS预飞行总是被拒绝,并带有403错误消息。

orther中已经有一个功能请求,用于支持CORS和CloudRun的身份验证。

到目前为止,我看到的解决办法是允许在CloudRun上进行未经身份验证的调用,并在代码上实现身份验证,但这可能会有安全缺陷。

 类似资料:
  • 问题内容: 我一直在尝试使用axios向National Park Service API发出GET请求,并尝试了几种方法将请求标头中的API密钥设置为无效。任何帮助将不胜感激。 我努力了: 和 都返回401。当我在Postman中发送GET请求时工作,我在密钥字段中输入Authorization,在值字段中输入我的API密钥。 谢谢。 问题答案: 此问题是由浏览器中的CORS OPTIONS请求

  • 我尝试使用angular2通过Oauth2身份验证访问我的Spring Boot应用程序。当我用基本身份验证(包括用户名和密码)向“oauth/token”发送post请求以获取token(在postman中可以正常工作)时,我得到了一个401未经授权。我知道我的浏览器用OPTIONS方法发送飞行前请求,我已经实现了我的安全配置,因此它应该忽略并允许OPTIONS请求,但它不起作用。 以下是我的安

  • 我想测试我的应用程序,并从API获得数据。当我登录到web时,我签入选项卡,它在中返回,示例:。我有可能在我的应用程序中引用这个url吗? 在console.log中我有错误 我正在努力做到:

  • 如何通过Axios.js发送带有令牌的身份验证头?我试过几件事都没有成功,比如: 给出以下错误:

  • 本文向大家介绍在axios中怎样添加授权验证?相关面试题,主要包含被问及在axios中怎样添加授权验证?时的应答技巧和注意事项,需要的朋友参考一下 在创建axios实例后

  • 我正在用Expo CLI构建一个React原生应用程序,我正在尝试用Axios和redux Thunk获取一些用户数据到我的redux商店。