当前位置: 首页 > 面试题库 >

在HTTPS页面中运行HTTP AJAX操作时,“混合内容被阻止”

戎元忠
2023-03-14
问题内容

我有一个表单(正在通过GET提交)到crm(ViciDial)。我可以成功提交表单,但是如果我这样做,则crm的处理文件将仅回显成功文本,仅此而已。

我想在我的网站上显示一个谢谢页面,而不是该文本,所以我决定使用AJAX提交表单并将其重定向到我需要的页面,但是在浏览器中出现此错误:

混合内容:“ https://page.com”上的页面已通过HTTPS加载,但请求了不安全的XMLHttpRequest端点“http://XX.XXX.XX.XXX/vicidial/non_agent_api.php?queries=query=data'。该请求已被阻止;内容必须通过HTTPS提供。

这是我的AJAX脚本:

    <script>
    SubmitFormClickToCall = function(){

        jQuery.ajax({
            url: "http://XX.XXX.XX.XX/vicidial/non_agent_api.php",
            data : jQuery("#form-click-to-call").serialize(),
            type : "GET",
            processData: false,
            contentType: false,
            success: function(data){
                window.location.href = "https://www.example.com/thank-you";
            }
        });
    }
    </script>

仅在URL中设置https是行不通的,有什么方法可以通过GET提交数据并将用户重定向到我的thankyou页面?

这里的问题是内容混合,这意味着我通过HTTPS加载了一个页面,并试图通过AJAX命中HTTP中的API。但是浏览器不允许我们这样做。

因此,如果您不能将API设置为HTTPS(这是我的情况),我们仍然可以采用其他方式进行处理。

主要问题不是混合内容问题,而是我想将数据提交到API并将用户重定向到精美的感谢页面。我没有使用AJAX,而是制作了一个php文件,该文件接收数据,使用curl将其发送到API(由于服务器端已完成此操作,因此没有混合内容问题),并将我满意的用户重定向到了一个精美的感谢页面。


问题答案:

如果您使用HTTPS在浏览器中加载页面,浏览器将拒绝通过HTTP加载任何资源。正如您尝试过的, 将API
URL更改为使用HTTPS而不是HTTP通常可以解决此问题
。但是,您的API必须不允许HTTPS连接。因此,您必须在主页上强制使用HTTP或请求它们允许HTTPS连接。

请注意以下事项:如果您转到APIURL而不是尝试使用AJAX加载请求,则该请求仍然有效。这是因为浏览器未从安全页面内加载资源,而是正在加载不安全页面并接受该页面。为了使它可以通过AJAX使用,协议应该匹配。



 类似资料:
  • 我正在开发一款带有Angular 7(前端)和Laravel(后端)的应用程序。我在《邮递员》中测试了这个endpoint,它是有效的。当我尝试登录应用程序时,我遇到了这个错误。 混合内容:页面位于'https://sandbox.cloudinteractiveplatforms.com/login'通过HTTPS加载,但请求了不安全的XMLHttpRequest终结点'http://sandb

  • 我目前正在使用jQuery AJAX获取一个相对URL,它前面没有方案/域(例如'/js/get_international_popup/'。当我在返回之前查看我的位置标头时,响应也是一个相对URL。 当我在HTTP上进行本地测试时,一切正常。然而,一旦我在我的live server上测试了它,通过HTTPS,响应就会被Chrome阻止,因为它说它不安全: 混合内容:页面位于'https://ex

  • 我的页面在https上,但我在AJAX中调用的API url在HTTP上。我无法获得AJAX响应。混合内容:“HTTPS://localhost:8443/examples/demo.html”的页面是通过HTTPS加载的,但请求了不安全的XMLHttpRequestendpoint“http://www.earthtools.org/timezone-1.1/40.71417/-74.00639

  • 角度HTTP请求被阻止-显示混合内容。 但当我通过浏览器URL访问时,内容会显示出来。 角度代码为: 控制台错误显示为: 混合内容:https://dash-thaidash.c9users.io/#/app/tonnage页面通过HTTPS加载,但请求不安全的XMLHttpRequest终结点http://crms.ttteamthoi.in/get_timespent_br。此请求已被阻止;内

  • 混合内容:页面位于'https://api.xyz.com/api/documentation'已通过HTTPS加载, 但是请求了一个不安全的样式表'http://api.xyz.com/swagger-ui-assets/swagger-ui.css?v=26ec363936a21921c9fec290e551e3eb'. 此请求已被阻止;内容必须通过HTTPS提供。 我知道如何在Laravel

  • 我在拉威尔项目工作。。我有一个问题: 混合内容:https://xxxxxx/admin/dashboard页面已通过HTTPS加载,但请求不安全的XMLHttpRequest终结点超文本传输协议://xxxxxx/admin/dashboard/order_statics/九月。此请求已被阻止;内容必须通过HTTPS提供。 我有这个。htaccess。