【发布时间】:2012-12-17 11:52:56
【问题描述】:
我有一个 API 客户端,它使用 JQuery 发出 JSONP 请求。一切正常 当此 API 客户端不使用 SSL 但使用 SSL 时失败。
例如,我有一个 URL http://apiclient.com,我正在从该域发出以下 JSONP 请求:
$.ajax({
url: url,
dataType: "jsonp",
contentType: "application/json; charset=utf-8",
success: function(data)
{
$.each(data.services, function(index, service) {
processService(service);
});
}
});
我看到向 url 中指定的 API 主机发出了适当的请求,success 中的回调函数被正确调用,并传递了正确格式的数据。
但是,当我将 API 客户端的上述 URL 更改为 https://apiclient.com 时, 在 API 主机上未观察到任何请求。我在日志的两边都没有看到任何错误。
注意:API 客户端的唯一区别是 http 和 https。
在使用 https 域时是否需要以不同的方式处理 JSONP 请求?
谢谢。
编辑: 此问题仅在 Chrome 中观察到。它适用于 Firefox 和 Safari。 但是,我在 FireFox 上收到了一个快速警告,询问我即将发出未加密的请求 加密网站。我允许它,再也没有看到警告。
【问题讨论】:
-
您的服务器是否配置为接受 Https 请求?在您的 ajax 查询中,也添加一个错误函数并检查是否有任何错误。
-
能否正常调用https API URL?也许是证书错误或其他什么?
-
@ryadavilli no AJAX error handler for
jsonprequests.. 参见文档 注意:跨域脚本和 JSONP 请求不调用此处理程序。 -
嗯,第一步是找出真正的问题是什么。我建议使用像 fiddler2 这样的工具(尽管 firebug/开发者工具足以看到我认为的错误代码)来查看发送的内容和返回的内容。跨度>
-
以下是可能导致此问题的提示:ithemes.com/codex/page/Fix_Non-SSL_Elements_on_SSL_Page。我猜您正在尝试访问安全站点,而您的页面实际上是不安全的?
标签: jquery api google-app-engine jsonp