jQuery.get无法在github网站上使用https(甚至请求同一域)
jQuery.get not working with https on github-sites (even request to same domain)
我已经考虑过另一个答案,但在我的情况下,我正在做一个简单的jQuery.get请求,这个请求也在我的同一个域上:
//Now, lets pull the data for panels
var maxi = $('#mainpanel .panel[id]').length;
var count = 0;
var processed = [];
$('#mainpanel .panel[id]').each(function(index) {
var id = $(this).attr('id');
var turl = '/kb/resources/' + id;
console.log('pulling data for resource',id,turl);
$.get(turl , function(data){
console.log('success');
var dummy = document.createElement("data");
window.dummy = dummy;
$(dummy).append(data);
var title = $(dummy).find('h1').text();
var header = document.createElement("div");
var panelBody = document.createElement("div");
var ul = document.createElement("ul");
console.log('dbg 1');
$(header).addClass('text-center panel-heading');
$(header).append('<h4><a href="' + turl + '">' + title + '</a></h4>');
$(panelBody).addClass('panel-body panel-res-summary');
$(panelBody).append(ul);
console.log('dbg 2');
$('#' + id).append($(header));
$('#' + id).append($(panelBody));
$(dummy).find('.container.default li').each(function(index){
var item = $(this).find('a:first');
var cls='';
if (item.hasClass('imp')) cls='class="imp"'; // mark
if ($(panelBody).height() >= 200) return;
$(ul).append('<li><a ' + cls + ' href="' + item.attr('href') + '">' + item.text() + '</a></li>');
});
console.log('dbg 3');
$(panelBody).append('<a class="small pull-right" href="' + turl + '"><em><u>more...</u></em></a>');
processed.push(id);
count += 1;
console.log('processed');
if (count>=maxi) { //(count%3==0)
msel = '#' + processed[count-1];
msel += ' #' + processed[count-2];
msel += ' #' + processed[count-3];
adjustBoxes(); //Now, lets adjust the heights of all panels
console.log('now called adjustBoxes');
}
});
上面的代码在localhost上运行良好,即使在HTTP版本的网站中也是如此,但无法在HTTPS版本的网站上检索内容。既然我向同一个域发出请求,为什么它不返回任何内容?
编辑
正如评论中提到的,我在这里使用了公认的答案来解决这个问题。在url末尾添加一个反斜杠可以解决问题,但问题仍然存在。这似乎是托管github页面的服务器出现的故障。
编辑2
正如@jcaron正确指出的那样,问题肯定出在我的url上。它正在为jekyll
生成的静态页面提供服务,该页面最后需要/
。由于我的代码遗漏了这一点,gh页面返回了301重定向并拒绝了第二个请求。然而,如果gh页面能够正确地重定向到我的ajax请求,那么我的问题就永远不会出现。简而言之,gh页末尾的故障仍然存在!
这个问题是由两个综合问题引起的:
-
您的URL(例如
http://www.prahladyeri.com/kb/resources/php
)不是真正的"好"URL,它需要重定向才能添加最终的/
。 -
服务器错误地重定向到CCD_ 5而不是CCD_。
因此,您的代码发出请求,得到一个301,尝试向http
URL发出第二个请求,然后被拒绝。
两种可能的解决方案:
-
正确包含最终
/
-
修复服务器以正确重定向到适当的协议
相关文章:
- $https请求的安全性
- Node.js https获取请求ECONNRESET
- 使用node.js的HTTPS请求
- Elasticsearch https cors已启用,但仍获得No'访问控制允许来源'标头存在于请求的
- xml在使用SSL https请求时失败
- 有没有办法为节点js-https请求设置源端口
- Google Chrome扩展HTTPS Ajax请求
- 节点JSON https请求未定义
- 从HTTP到HTTPS的跨域请求立即中止
- 如何使用Worklight使用服务器端javascript发出HTTPS请求
- 在Chrome扩展中使用PAC文件重定向HTTPS请求似乎失败了
- 将 CORS 请求发布到运行 sailsjs 的 HTTPS 域
- 如何在 node.js 中发出 https 请求
- Angular templateUrl 在 https 上被阻止 “此请求已被阻止;内容必须通过HTTPS提供
- 使用 jsonp 的跨域请求:从 https 到 http
- 通过 https 请求访问和读取 html/php 页面,由 htaccess apache2 Server 后面的 Q
- 节点嵌套的 HTTPS 请求
- AJAX 请求 (HTTPS) 在 iPhone 上没有响应
- href 谷歌字体通过HTTPS仅当HTTPS页面请求时
- 节点JS,从两个链接同步发出HTTPS请求