0

我正在 hubspot cos 上建立一个博客。我们希望博客文章在滚动时加载。我找到了一个脚本,它声明它这样做并且专门用于 Hubspot。

话虽如此,当我通过滚动激活脚本时,我在控制台中收到 403。我认为这不像 Ajax 问题那样是 hubspot 问题。

我正在使用的脚本:www.uvm .edu/~enewbury/swoosh/

我们 hubspot cdn 上的脚本:http: //cdn2.hubspot.net/hub/1739321/hub_generated/template_assets/1452520555218/custom/page/JS/Swoosh.min.js

博客:http: //insights.signetaccel.com/blog

唯一让我印象深刻的是ajax请求是跨域的,但这是文件和公司域之间的hubspot中的正常现象,所以如果这个脚本是为在hubspot中使用而构建的,我认为所有者会考虑这。

我一直在寻找答案,但我空手而归。应该注意的是,php 代理不起作用,因为服务器端编程不是 hubspot 的选项。

我真的很感激一些答案或一些关于在这里做什么的提示。

$(document).ready(function(){
        $(".grid").swoosh();
    });



(function(a) {
a.fn.swoosh = function(f, k) {
    if (!f) {
        f = "Loading..."
    }
    if (k == null) {
        k = -1
    }
    var c = this;
    var e = false;
    var j = 2;
    var d = window.location.href.toString().split("/");
    var i = d[0] + "//" + d[2] + "/" + d[3] + "/";
    var h = i + "page/";
    var g = "";
    var b = false;
    if (f != "Loading...") {
        c.parent().append('<div class="loading"><img src="' + f + '"></div>')
    } else {
        c.parent().append('<div class="loading">' + f + "</div>")
    }
    a(".loading").hide();
    a(document).scroll(function() {
        if (b || e || j == 0) {
            return false
        }
        if (a(window).scrollTop() >= a(document).height() - a(window).height() - a(".footer-container-wrapper").height() - 150) {
            b = true;
            a(".loading").fadeIn(200);
            g = h + j;
            a.post(g, function(m) {
                var l = a(m).find(".grid-item");
                      if (l.length) {
                          console.log(f);
                            a(".loading").fadeOut(200, function() {
                             l.appendTo(".grid")
                        });
                        j++;
                         a(".next-posts-link").attr("href", h + j)
                     } else {
                         e = true;
                         a(".next-posts-link").after('<div class="next-posts-link unactive">Next</div>');
                         a(".next-posts-link:not(.unactive)").remove();
                        a(".loading").fadeOut(200)
                        }
                        b = false;
                        setTimeout(function() {
                        twttr.widgets.load();
                        IN.parse();
                        FB.XFBML.parse();
                        gapi.plusone.go()
                    }, 350)
                })
             }
        })
    }
})(jQuery);
(function() {
    return window.SIG_EXT = {};
})()
4

1 回答 1

0

TL;DR——你得到一个 403 因为脚本使用的是 jQuery.post而不是.get; 不允许向 HubSpot COS/博客页面发送 http POST。这出现在原始 js 示例的第 45 行:http ://www.uvm.edu/~enewbury/swoosh/swoosh.js

切换 GET 的 HTTP 方法,然后继续调试。该脚本是非官方的,虽然旨在通用,但依赖于 HubSpot 的 COS/blog 生成的特定主体结构和元素分类。可能需要更多调试才能使其正常工作。


详细信息:这个脚本的工作方式有点笨拙。它不会从 API 或其他有效资源中获取博客内容——相反,它会在您滚动时抓取 /page/2、/page/3 等的完整 HTML,从它检索到的响应中解析出博客文章 HTML,并且将它在异步获取中找到的帖子注入当前页面。

使用 POST 而不是 GET 来获取此内容会生成 403 Forbidden。

由于脚本在很大程度上取决于以特定方式分类的某些元素,因此可能存在更多问题,但这可以解决您直接的 403 问题。

于 2016-01-11T15:39:26.563 回答