HTTPS请求中的跨域请求阻止错误

时间:2019-09-10 08:05:55

标签: vue.js https

我从前端(基于Vue)到另一台服务器上的公司API(服务器使用SSL证书)有一个标准的HTTPS Axios请求。

testApi() {

 axios.get('https://rng-hub2.staging.rng:8001/rng/3/')
      .then(function (response) {
      // handle success
      console.log(response);
  })
  .catch(function (error) {
      // handle error
      console.log(error);
  })
  .finally(function () {
      // always executed
  });


},

导致以下错误的原因: 在Firefox中: enter image description here

在Chrome中,错误如下所示:

enter image description here

正如我在想的那样,在Netwerk->响应标签下的浏览过的开发工具中,我也应该看到一个错误,这对于Chrome来说是正确的,但对于Firefox来说却并非如此。 因此Chrome向我显示了:

enter image description here

但是在Firefox中,我以完全正确的格式接收数据:

enter image description here

您是否知道如何正确检索此数据并将其分配给.then节中的响应变量?

关于跨域请求被阻止的错误:API的服务器管理员告诉我,他已经将我的IP添加到了CORS“可信列表”中。但是我不确定,因为根据这篇文章:https://jonhilton.net/cross-origin-request-blocked/ 在我的响应标题中,我应该收到一个带有我的本地IP的附加标题,例如:

Access-Control-Allow-Origin: http://192.168.32.44

但是我不是。

该代理人员也没有工作: How to deal with CORS error on Vue CLI 3?

请给我提示我在做什么错

1 个答案:

答案 0 :(得分:0)

找到了解决方案。问题比我想的还要深。简短的答案是:如果您在本地网络中使用不同的API服务器,则它们可能已通过内部公司CA(证书颁发机构)的认证,能够通过HTTPS协议进行通信。因此,您需要的是,从服务器管理员那里请求给您private_key,您可以使用该密钥将所有请求签名到特定的API。令人吃惊的是,它看起来像这样:

new GuzzleClient(['verify' => '/path/to/self-signed/cert.pem']);