jQuery.get无法在github网站上使用https(甚至请求同一域)

jQuery.get not working with https on github-sites (even request to same domain)

本文关键字:请求 https get github 网站 jQuery      更新时间:2023-09-26

我已经考虑过另一个答案,但在我的情况下,我正在做一个简单的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,尝试向httpURL发出第二个请求,然后被拒绝。

两种可能的解决方案:

  • 正确包含最终/

  • 修复服务器以正确重定向到适当的协议