混合内容错误 (Http/Https)

Posted

技术标签:

【中文标题】混合内容错误 (Http/Https)【英文标题】:Mixed Content Error (Http/Https) 【发布时间】:2016-04-16 00:24:03 【问题描述】:

我有混合内容错误,在网站上同时使用了 http 和 https 协议。

这是来自 Chrome 控制台的错误:

混合内容:“https://www.amazon.com/”处的页面通过 HTTPS 加载,但请求了不安全的 XMLHttpRequest 端点“http://www.amazon.com/../?redirect=true”。此请求已被阻止;内容必须通过 HTTPS 提供。

这里是错误截图:http://prntscr.com/9os5li

找到了一些解决方案,例如:

将链接从“http://”更改为“https://” Blocked loading mixed active content.

没有任何帮助,因为当我将代码或手册中的链接从 http 更改为 https 时,Amazon 服务器会一直丢弃它并将其设为 http

例如这个Link 2我不能在这里使用https,因为这个我有混合内容错误。

这是我拨打电话的 AJAX:

$.ajax(
            url: "//" + MWS_URL + rest_path,
            data: request,
            dataType: 'text',
            type: 'POST',
            contentType: 'application/x-www-form-urlencoded; charset=utf-8',
            beforeSend: function(req) 
                //req.setRequestHeader("User-Agent", "chrome extension");
                req.setRequestHeader("x-amazon-user-agent", "chrome extension");
            ,
            success: function(data)
                if (onSuccess) 
                    onSuccess(data);
                
            ,
            error: function(jqXHR, textStatus, errorThrown) 
                if (onError) 
                    onError(jqXHR, textStatus);
                
            
        );
        setTimeout(callService, 1000);
    

请求:

requests.push(
                    $.get(link.URL, function (data) 
                        if (IsCancel()) 
                            return;
                        
                        var jdata = $($.parsehtml(data));
                        var parser = new ProductPageParser(jdata, link.URL);
                        if (!parser.isValidProduct()) 
                            console.log(link.URL + " is not a valid product, skipped.");
                            link.processed = true;
                            return;
                        

                        // Process associated (linked) product on this page according to user preferences.
                        crawlLinkedProducts(jdata, link.URL, config);

                        // Store product into a collection.
                        var product = getProductForParser(parser, link);
                        //product.dbRawProductURL = urlRaw;
                        if (product) 
                            products.push(product);
                        
                        link.processed = true;
                    )
                );

正如我在解析器中解析的那样,这里是第二级解析器。我在主页上解析了产品:

$(productUrls).each(function (index, link) 
                        if (!link.processed) 
                            console.log("Download second level -> " + link.URL);
                            requests_2level.push(
                                $.post(link.URL, "", function (data) 
                                    if (IsCancel()) 
                                        return;
                                    

                                    console.log("End download second level -> " + link.URL);
                                    var jdata = $($.parseHTML(data));
                                    var parser = new ProductPageParser(jdata, link.URL);

                                    if (!parser.isValidProduct()) 
                                        console.log(link.URL + " is not a valid product, skipped.");
                                        link.processed = true;
                                        return;
                                    

                                    var hackUrl = "//amazon.com/o/ASIN/" + parser.getAsin();
                                    link.URL = hackUrl;
                                    var product = getProductForParser(parser, link);
                                    if (product) 
                                        products.push(product);
                                    
                                    link.processed = true;
                                )
                            );

                        
                    );

有人知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

如果亚马逊不断将您从 HTTPS 重定向到 HTTP,那么您将无能为力:

在亚马逊抱怨他们解决了它 使用差异服务

【讨论】:

我不认为亚马逊会为我做任何事,如果我要求他们在所有产品页面上使用 https :)【参考方案2】:

决定是使用 http 还是 https,每次调用都使用相同的 on。

【讨论】:

如果亚马逊在某些页面上使用 https,我不能使用 http,只是出于安全考虑。我可以让所有页面都使用 http,但这对我来说不是一个好的决定 决定只使用 http,如果导航到 https 页面,将其更改为 http,仅此而已。谢谢:)

以上是关于混合内容错误 (Http/Https)的主要内容,如果未能解决你的问题,请参考以下文章

混合内容页面:请求不安全的样式表错误

Swagger 设置解决混合内容错误

Angular - 混合内容:“https 错误”处的页面

捕获“阻止加载混合活动内容”CORS 错误

将 Magento 1 url、http 更改为 https 错误混合内容

对 Flask 进行 ajax 调用时出现混合内容错误