2

我有以下问题:我需要将一些数据从我网站上的页面(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)吗?

预先感谢您的帮助。

PS 来自“http”站点,此代码按预期工作。

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

4

2 回答 2

2

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

访问控制请求标头

访问控制允许来源

访问控制允许方法

请参考cors及其实现

于 2013-10-24T02:51:27.237 回答
1

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

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

希望这可能会有所帮助

于 2013-10-23T18:58:44.767 回答