我遇到以下问题:我需要将网站页面(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)吗?
提前感谢您的帮助。
P.S。从“http”-site,此代码按预期工作。
更新: 我们使用另一个“https”-url(https://anotherdomain.com/qwerty/ajaxpage.php)解决了该问题。我们以前尝试过使用它,但它有不受信任的证书。现在它正常工作。感谢您的帮助和建议。
答案 0 :(得分:2)
这是由于 CORS 造成的。当您向其他域请求时,可能会在 ajax 调用的条件下发生预检请求。您正在使用jQuery,因此将在您的请求中设置自定义标头。所以使用
访问控制请求报头
访问控制允许来源
接入控制允许的方法
请参阅cors及其implementation。
答案 1 :(得分:1)
这也应该在服务器中允许,尝试在处理请求的地方添加它
<?php header('Access-Control-Allow-Origin: *'); ?>
希望这可能会有所帮助