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

Xam*_*Dev 2 azure asp.net-web-api mixed-content angular5

我们已经在Azure上部署了api,并试图在用angular 5编写的Web应用程序中使用该API。但是,当我们尝试使用该API时,会遇到以下错误。

Chrome混合内容:“ https://somedevapp.azurewebsites.net/#/managesomething ”上的页面已通过HTTPS加载,但请求了不安全的XMLHttpRequest端点' http://admindevapp.azurewebsites.net/api/data/getdata ' 。该请求已被阻止;内容必须通过HTTPS提供。

Firefox阻止加载混合的活动内容

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

任何帮助对此表示赞赏!

小智 9

使用这个 ---- 在你的头部部分添加我将在我的天气应用程序中尝试这个,现在它工作正常

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)


Rah*_*pta 8

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)

仅当您的资源 API 支持 HTTPS 请求时才可以使用此选项。

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


小智 6

仅在标题部分添加此内容。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
Run Code Online (Sandbox Code Playgroud)


Meh*_*him 5

如果您已按照指示将Web应用程序托管在HTTPs上,则它消耗的所有外部资源(CDN,脚本,CSS文件,API调用)也应使用SSL并通过HTTPs进行保护。想一想。如果您的应用程序反过来向API提出了不安全的请求,那将破坏您的应用程序安全的目的。

因此,您可以:

  1. 根据Chrome的建议,将您的API调用更改为使用HTTP(推荐
  2. 使用HTTP代替HTTP
  3. 将以下meta标记添加到<head>HTML中的元素:

    <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

  • 请注意,这仅在请求的资源支持 HTTPS 时才有效,在这种情况下,只需使用 HTTPS 即可。 (4认同)

小智 5

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

   <meta 
     http-equiv="Content-Security-Policy"   
     content="upgrade-insecure-requests" 
    />
Run Code Online (Sandbox Code Playgroud)