使用 jsonp 的跨域请求:从 https 到 http

Cross domain request using jsonp: from https to http

本文关键字:https http 请求 jsonp 使用      更新时间:2023-09-26

我有以下问题:我需要将一些数据从我网站上的页面(https://test.com)发送到另一个页面(例如 http://anotherdomain.com)。用户只需将数据输入文本框并单击按钮即可。此页面上的脚本将处理单击事件并将 GET 请求(使用 jQuery ajax 方法)发送到 http://anotherdomain.com。

var enteredValue = $('#MytextBox').val();
function jsonpCallbackFunc(data) 
{
}
$.ajax({
    url: 'http://anotherdomain.com/qwerty/ajaxpage.php',
    data: { valuefield: enteredValue },
    dataType: 'jsonp',
    jsonp: 'callback',
    jsonpCallback: 'jsonpCallbackFunc',
    success: function (json) {
          // some code
    }
})

我在使用 FireFox 时收到下一个错误 - "阻止加载混合活动内容 http://anotherdomain.com/qwerty/ajaxpage.php..."。IE9和Chrome的情况也是如此。

问题:我们如何解决这个问题?我们可以只允许一个站点使用这个脚本,或者我们可以使用另一段代码(不是jQuery+jsonp)吗?

提前感谢您的帮助。

附言从"http"站点,此代码按预期工作。

更新:我们使用另一个"https"网址 (https://anotherdomain.com/qwerty/ajaxpage.php) 解决了这个问题。我们以前尝试过使用它,但它的证书不受信任。现在它工作正常。感谢您的帮助和建议。

这是由于 CORS 而发生的。当您向其他域发出请求时,可能会根据 ajax 调用的条件进行预检请求。您正在使用jQuery,因此自定义标头将在您的请求中设置。所以使用

访问控制请求标头

访问控制允许源

访问控制-允许-方法

请参考cors及其实现。

这也应该在服务器中允许,尝试在处理请求的位置添加它

<?php header('Access-Control-Allow-Origin: *'); ?>

希望这可能会有所帮助