Web API 错误 - 此请求已被阻止;内容必须通过 HTTPS 提供

Web API Error - This request has been blocked; the content must be served over HTTPS

我们已经在 azure 上部署了 api 并尝试在我们用 angular 5 编写的网络应用程序中使用。但是,当我们尝试使用 api 时,出现以下错误.

Chrome Mixed Content: The page at 'https://somedevapp.azurewebsites.net/#/managesomething' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://admindevapp.azurewebsites.net/api/data/getdata'. This request has been blocked; the content must be served over HTTPS.

Firefox Blocked loading mixed active content

此问题与 CORS 相关吗?如何解决这个问题?

感谢任何帮助!

如果您的网络应用如您所指出的那样通过 HTTPS 托管,那么它使用的所有外部资源(CDN、脚本、CSS 文件、API 调用)也应该使用 SSL并通过 HTTPs 进行保护。想想看。如果您的应用程序反过来向 API.

发出不安全的请求,这将破坏您的应用程序的安全目的。

您可以因此:

  1. 按照 Chrome 的建议,更改您的 API 调用以使用 HTTP(推荐
  2. 使用 HTTP 而不是 HTTPs
  3. 将以下 meta 标记添加到 HTML 中的 <head> 元素:

    <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

可在此处找到更多相关信息:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests

下面的元标记有助于防止 Chrome 抱怨发出的 HTTP 请求。我正在开发一个 class 项目(一个天气应用程序)并且 API 通过 HTTP 调用并向 HTTP 调用添加 S 没有帮助。由于这是一个项目,因此没有重大问题。上面由@Medhi Ibrahim 分享的元标记可以解决问题。

<meta> http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

使用这个 ---- 添加到你的 head 部分 我会用我的天气应用程序试试这个,现在它工作正常

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

仅将此添加到 header 部分。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

只有当您的资源 API 支持 HTTPS 请求时才可以使用它。

示例:“http://ip-api.com/json”和“https://ip-api.com/json”都不会 return 如果“ip-api.com”不支持 HTTPS 请求,则相同的响应。

我试图删除索引上的“元解决方案”。 并删除 environment.prod.ts

上的“s”

当我登录“http://app.finoview.com”时,api Nestjs 工作。

但是当我尝试登录“https://finoview.com”时,angular 有效,但 api nestjs 不起作用。

图片如下: