Javascript 我们可以在HTTPS和HTTP站点之间建立连接吗?

Javascript 我们可以在HTTPS和HTTP站点之间建立连接吗?,javascript,angularjs,http,https,Javascript,Angularjs,Http,Https,我有一个网站,我在Shopify中托管在HTTPS,然后我通过HTTP网站创建了一个GET 棱角分明 <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></scri

我有一个网站,我在Shopify中托管在
HTTPS
,然后我通过
HTTP
网站创建了一个GET


棱角分明

<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Roboto:400,900" rel="stylesheet">

<style type="text/css">
    div {
        font-family: 'Roboto', sans-serif;
    }

    p, a {
        font-size: 12px;
        font-family: 'Roboto', sans-serif;
    }

    .body-text-header-large {
        font-size: 1.5em;
        font-weight: 300;
        line-height: 2em;
        color: #42baf1;
        font-family: 'Roboto', sans-serif;
    }

    .company-name {
        font-weight: 900;
        font-family: 'Roboto', sans-serif;
    }

</style>


<div ng-app="myApp" ng-controller="myCtrl">
    <div class="container">


        <span class="body-text-header-large">DISTRIBUTORS</span>
        <p class="silver">Bioss Antibodies are sold worldwide. Find a distributor near you to order in your area!</p>



        <div ng-repeat="obj in data" >

            <div class="row">

                <!-- Country -->
                <div class="col-xs-4 text-center" >
                <p>{{obj.country}}</p>
                    <img src="data:image/png;base64,{{obj.flag}}" alt="" width="30px">
                </div>

                <!-- Main Info -->
                <div class="col-xs-4" >
                    <p class="company-name">{{obj.user.username}}</p>
                    <p>{{obj.distributor.phone_public}}</p>
                    <p>{{obj.user.email}}</p>
                    <a href="{{obj.distributor.url}}">{{obj.distributor.url}}</a></span> <span class="col span_2_of_6">
                </div>

                <!-- Logo -->
                <div class="col-xs-4 pull-right" >
                    <img src="data:image/png;base64,{{obj.logo}}" alt="" width="100px">
                </div>

            </div>

            <br><hr>


        </div>

    </div>
</div>

<script>

    "use strict";
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope, $http) {
        $http.get("http://d.biossusa.com/api/distributor?key=*******")
        .then(function(response) {
            var data = response.data;

            var array = $.map(data, function(value) {
                return [value];
            });

            console.log(typeof(array));
            console.log(array.length);
            console.log(array);

            try {
              $scope.data = array;
          } catch (error) {
              console.log('its not json');
          }
      });
    });

</script>

div{
字体系列:“Roboto”,无衬线;
}
p、 a{
字体大小:12px;
字体系列:“Roboto”,无衬线;
}
.正文文本标题大{
字号:1.5em;
字体大小:300;
线高:2米;
颜色:#42baf1;
字体系列:“Roboto”,无衬线;
}
.公司名称{
字号:900;
字体系列:“Roboto”,无衬线;
}
分销商

Bioss抗体在全球销售。找到附近的经销商在您的区域订购

{{obj.country}

{{obj.user.username}

{{obj.distributor.phone_public}}

{{obj.user.email}



“严格使用”; var-app=angular.module('myApp',[]); app.controller('myCtrl',函数($scope,$http){ $http.get(“http://d.biossusa.com/api/distributor?key=*******") .然后(功能(响应){ var数据=响应数据; 变量数组=$.map(数据、函数(值){ 返回[值]; }); log(typeof(array)); console.log(array.length); console.log(数组); 试一试{ $scope.data=数组; }捕获(错误){ log(“它不是json”); } }); });

本地结果

做得很好


我一直在

拒绝连接到“******”,因为它违反了以下内容安全策略指令:“connect src‘self’https://*wss://*”

将我的API站点从HTTP转换为HTTPS可能有点昂贵。这方面的工作是什么

还有别的办法吗


是否有任何框架或API可以帮助避免此错误

从HTTP到HTTPS调用URL时,将阻止您的请求。浏览器协议作为不同的源处理

例如,您可以使用启用跨源HTTP请求。使用CORLS将允许您将请求从HTTP发送到HTTPS。这是一个为CORS的使用以及它是什么奠定基础的文档

大多数情况下,您需要通过在响应头中添加
访问控制允许来源:
来允许跨域请求。此配置将在后端应用程序(服务器端)中进行。但目前这对您没有帮助:

注意由于浏览器的安全特性,如果从HTTPS到HTTP调用URL,CORS/AJAX请求将不起作用。看一看上面写着:

正如跨源请求算法的第一步和重定向步骤算法所示,允许用户代理终止算法而不发出请求。这可能是因为,例如:

  • 资源的来源被列入黑名单

  • 已知资源的来源是intranet的一部分

  • 不支持该URL。 -不允许https到http

  • 由于证书错误,不允许使用https


由于CORS策略,无法从HTTP URL调用HTTPS,我也面临同样的问题。 所以,我把我的网站从HTTP改为HTTPS,使用[


将您的HTTP网站转换为HTTPS。

在我的NGINX配置中,我已经将其设置为允许来自任何来源的所有标头。我还需要做其他事情吗?您对HTTP网站做了什么?您是否将其托管在iFrame中?在这里显示一点示例代码将大有帮助。@RobertHarvey:我更新了我的帖子,我正在尝试这样做做吧。我只是想做的就是访问API并很好地显示数据…@KevinB他没有使用jQuery。请看一下规范。你是对的,我只是不认为这个问题与cors有关。它被拒绝的原因与https页面上拒绝http图像的原因相同。cloudflare做什么?它将我的HTT将站点转换为HTTPS?它像SSL站点吗?是的,它是免费的SSL站点,因此它将您的站点从HTTP转换为HTTPS,您将不会面临这些问题。HTTPS访问HTTP?没有办法解决这个问题?您可以使用在HTTPS上运行的代理或脚本,并将您的请求转发到您的HTTP目的地。您对此有示例或建议吗任务类型?我建议让您的API在HTTPS上运行。HTTPS->http有一个