Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax调用,JSONP在Safari上失败_Javascript_Json_Ajax_Safari_Jsonp - Fatal编程技术网

Javascript Ajax调用,JSONP在Safari上失败

Javascript Ajax调用,JSONP在Safari上失败,javascript,json,ajax,safari,jsonp,Javascript,Json,Ajax,Safari,Jsonp,我正在向一个API发出ajax请求,该API的域名与我的站点的域名不同。为了使数据能够跨浏览器访问,我使用了JSONP,但Safari仍然阻止了它。然而,它在Chrome上工作 我正在将响应字符串注入HTML按钮的文本中。我对JSONP做得不对吗?我必须将JSONP注入到脚本标记中才能工作吗 我必须构建一个代理吗?我的客户端选项是什么?是否需要在API服务器端执行其他操作 我找了这么多,但没有找到任何明确的答案。我了解到,在脚本标记中将数据加载到网站中可能会出现安全问题 错误: differen

我正在向一个API发出ajax请求,该API的域名与我的站点的域名不同。为了使数据能够跨浏览器访问,我使用了JSONP,但Safari仍然阻止了它。然而,它在Chrome上工作

我正在将响应字符串注入HTML按钮的文本中。我对JSONP做得不对吗?我必须将JSONP注入到脚本标记中才能工作吗

我必须构建一个代理吗?我的客户端选项是什么?是否需要在API服务器端执行其他操作

我找了这么多,但没有找到任何明确的答案。我了解到,在脚本标记中将数据加载到网站中可能会出现安全问题

错误:

different-domain-api.com&callback=jQuery123456&_=56789000
Failed to load resource: The certificate for this server is invalid. You might be connecting to a server that is pretending to be “different-domain-api.com” which could put your confidential information at risk.
//启动模块代码:

var myObject = {},
subscribeBtn = $("#subscribe-btn > span");

myObject.priceChangeHandler = function () {
    priceChangeModule.ajaxRequest(params)
    .done( self.successFunc ) // extracting the success callback to another method
    .fail(function (error) {
        console.log("Errors in safari", error);
        return error;
    });
});

myObject.successFunc = function (data) {
    subscribeBtn.text(data.result[0]);
    console.log("Displays data in Chrome correctly", data);
};
ajaxRequest: function (params) {
    return $.ajax({
        dataType: 'jsonp',
        url: '//different-domain-api.com',
        type: 'GET',
        timeout: 120000
    });
}
//价格变更模块代码:

var myObject = {},
subscribeBtn = $("#subscribe-btn > span");

myObject.priceChangeHandler = function () {
    priceChangeModule.ajaxRequest(params)
    .done( self.successFunc ) // extracting the success callback to another method
    .fail(function (error) {
        console.log("Errors in safari", error);
        return error;
    });
});

myObject.successFunc = function (data) {
    subscribeBtn.text(data.result[0]);
    console.log("Displays data in Chrome correctly", data);
};
ajaxRequest: function (params) {
    return $.ajax({
        dataType: 'jsonp',
        url: '//different-domain-api.com',
        type: 'GET',
        timeout: 120000
    });
}
答复:

/**/jQuery123456({data});
标题:

General:
    Request URL: //different-domain-api.com&callback=jQuery123456&_=56789000

Request Headers:
    Accept:*/*
    Accept-Encoding:gzip, deflate, sdch, br
    Accept-Language:en-US,en;q=0.8
    Host:different-domain-api.com

Response Headers:
    Content-Type:application/javascript;charset=UTF-8

您在Safari中遇到了什么错误?“我必须将JSONP注入到脚本标记中才能工作吗?”通过添加
,JSONP什么都不是。jQuery会自动为您执行此操作(实际上不会执行Ajax请求)。@FelixKling抱歉,我忘了包含错误。编辑了这篇文章。“different domain api.com&callback=jQuery123456&56789000未能加载资源:此服务器的证书无效。您可能正在连接假装为“different domain api.com”的服务器,这可能会使您的机密信息面临风险。”因此,似乎
不同域api.com
使用了无效的SSL证书。这与同一原产地政策无关。我会查看证书以检查它的错误。这与您尝试在浏览器中访问网站时,它会弹出一个关于无效证书的安全警告完全相同。@felix您知道我们在哪里查找或可以访问此证书吗?感谢当我在浏览器中粘贴控制台错误()中的url时,Safari显示一个弹出窗口,其中包含以前的错误消息,并询问我们是否要继续。Safari中出现了什么错误?“我必须将JSONP注入到脚本标记中才能工作吗?”通过添加
,JSONP什么都不是。jQuery会自动为您执行此操作(实际上不会执行Ajax请求)。@FelixKling抱歉,我忘了包含错误。编辑了这篇文章。“different domain api.com&callback=jQuery123456&56789000未能加载资源:此服务器的证书无效。您可能正在连接假装为“different domain api.com”的服务器,这可能会使您的机密信息面临风险。”因此,似乎
不同域api.com
使用了无效的SSL证书。这与同一原产地政策无关。我会查看证书以检查它的错误。这与您尝试在浏览器中访问网站时,它会弹出一个关于无效证书的安全警告完全相同。@felix您知道我们在哪里查找或可以访问此证书吗?感谢当我在浏览器中粘贴控制台错误()中的url时,Safari显示一个弹出窗口,其中包含以前的错误消息,并询问我们是否要继续。