首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用https而不是http时,JSONP请求失败

使用https而不是http时,JSONP请求失败
EN

Stack Overflow用户
提问于 2013-01-03 13:22:10
回答 3查看 16.7K关注 0票数 20

我有一个应用程序接口客户端,它使用JQuery发出JSONP请求。当此API客户端不使用SSL时,一切正常,但是当使用SSL时,一切都会失败。

例如,我有一个URL,我从该域发出以下http://apiclient.com请求:

代码语言:javascript
复制
$.ajax({
    url: url,
    dataType: "jsonp",
    contentType: "application/json; charset=utf-8",
    success: function(data)
    {
        $.each(data.services, function(index, service) {
            processService(service);
        });
    }
});

我看到对成功中的url和回调函数中指定的API host发出了适当的请求,并向其传递了格式正确的数据。

但是,当我将API客户端的上述URL更改为https://apiclient.com,时,API主机上没有观察到请求。我在日志的两边都看不到错误。

注意:唯一的区别是客户端的httpshttps

在使用https域名时,您是否需要以不同的方式处理JSONP请求?

谢谢。

编辑:此问题仅在Chrome中观察到。它适用于Firefox和Safari。然而,我在FireFox上收到了一个快速警告,询问我即将从加密的站点发出未加密的请求。我允许这样做,并且再也没有看到警告。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-09 01:29:03

找到了解决方案。问题是JQuery和其他资源是从不安全的站点导入的。解决方案是参考https。

票数 11
EN

Stack Overflow用户

发布于 2013-01-08 00:17:45

对于http和https的JSONP请求应该没有任何不同。

试试我们的.getJSON吧:

代码语言:javascript
复制
$.getJSON(url, function(data) {
  $.each(data.services, function(index, service) {
        processService(service);
    });
});

使用jQuery.ajax()会导致跨浏览器问题,但jQuery.getJSON()不会出现这种情况。有关更多信息,请访问jQuery站点:http://api.jquery.com/jQuery.getJSON/

关于这个问题有类似的帖子:JSONP To Acquire JSON From HTTPS Protocol with JQuery

票数 1
EN

Stack Overflow用户

发布于 2013-01-08 14:58:29

更改协议与更改URL的任何其他部分具有相同的效果--它将触发对同源策略的违反,并强制您进入跨域模式。如果您已经有了跨域访问,它将继续与https一起工作,就像它与http一样。

例如,您可以使用getJSON

代码语言:javascript
复制
$.getJSON('ajax/test.json', function(data) {
  $('.result').html('<p>' + data.foo + '</p>'
    + '<p>' + data.baz[1] + '</p>');
});

查看完整的getJSON文档http://api.jquery.com/jQuery.getJSON/

我错了吗..。使用Juqery.ajax会导致跨浏览器问题,但使用Jquery.getJSON不会

http://docs.jquery.com/Release:jQuery_1.2/Ajax#Cross-Domain_getJSON_.28using_JSONP.29

以下是跨域get JSON示例

firefox有一个HTTPS的问题,因为我知道如果你像这样发送你的请求,它会被修复的

代码语言:javascript
复制
$.getJSON('ajax/test.json',{}, function(data) {
  $('.result').html('<p>' + data.foo + '</p>'
    + '<p>' + data.baz[1] + '</p>');
});

索鲁斯AJAX https POST requests using jquery fail in Firefox

我希望这能帮到你

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14133484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档