仍然使用同源策略 为啥 JSON 响应在 https 链接上使用 jquery ajax 是空白的?
Posted
技术标签:
【中文标题】仍然使用同源策略 为啥 JSON 响应在 https 链接上使用 jquery ajax 是空白的?【英文标题】:using same origin policy still Why JSON response is blank with jquery ajax on https link?仍然使用同源策略 为什么 JSON 响应在 https 链接上使用 jquery ajax 是空白的? 【发布时间】:2013-01-16 16:24:24 【问题描述】:我有一个 HTTPS 页面,在该安全页面上我正在尝试实现 jquery 自动完成插件。
我的代码如下:
function stateAutoComplete(id, widthParam)
widthParam = typeof widthParam !== 'undefined' ? widthParam : '188px';
jQuery( "#"+id).autocomplete(
source: function( request, response )
jQuery.ajax(
url: base_url+"/stateSearchJSON",
dataType: "jsonp",
data:
maxRows: 10,
startsWith: request.term
,
success: function( data )
response( jQuery.map( data.states, function( item )
return
value: item.stateName,
label: item.stateName
));
jQuery('.ui-autocomplete').css('width', widthParam);
);
,
我使用同源策略通过 jquery ajax 调用获取 json 响应,但是当我在 firebug net 选项卡中看到响应时,我得到空响应并且响应 url 变为红色。
我不知道为什么会发生这种情况,因为我在 http 页面上使用了相同的代码并且它在 http 页面上运行得非常好,那么为什么这个问题会出现在 https 页面上?
谁能帮帮我?
提前致谢
【问题讨论】:
你得到 302 在萤火虫中找到响应? base_url+"/stateSearchJSON - 这个 url 也应该是 HTTPS。如果不是,它不符合同源策略。 @Samy 是的,你是对的,但我知道同源策略规则,我的 base_url 是 https。我收到了回复,但它是空白的。如果我不遵循相同的起源,那么即使我也不会得到任何空白响应。 我有空白响应意味着请求成功,唯一的问题是响应是空白的。 我确定不是同源政策问题。我已经关注了。 我不确定。请检查目标 URL 功能。可能在您的代码中的某个位置,目标 URL 将被重定向到正常的 HTTP 。使用 fiddler 或其他工具逐步分析重定向。 【参考方案1】:您必须确保请求来自:http://example.com/requestingpage.html 到 http://example.com/stateSearchJSON
而不是:http://example.com/requestingpage.html 到 https://example.com/stateSearchJSON 或http://example.com/requestingpage.html转https://differenturl.com/stateSearchJSON
否则,您将不得不添加一个回调并使用 jsonp(看起来您正在使用它)。如果您不需要它,您可能需要删除“json
【讨论】:
以上是关于仍然使用同源策略 为啥 JSON 响应在 https 链接上使用 jquery ajax 是空白的?的主要内容,如果未能解决你的问题,请参考以下文章
跨域请求被阻止:同源策略不允许在 http://localhost3000 读取远程资源