Ajax 对于 "load on scroll" 脚本提供 403
Ajax for "load on scroll" script delivers 403
我正在 hubspot cos 上建立博客。我们希望博客文章滚动加载。我找到了一个脚本,声明它可以执行此操作并且专门用于 Hubspot。
也就是说,当我通过滚动激活脚本时,我在控制台中收到 403。我认为这不像 Ajax 问题那么严重。
我使用的脚本:
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 = {};
})()
TL;DR -- 您收到 403 是因为脚本使用的是 jQuery 的 .post
而不是 .get
;不允许使用 http POST 到 HubSpot COS/blog 页面。这出现在此处原始 js 示例的第 45 行:http://www.uvm.edu/~enewbury/swoosh/swoosh.js
关闭 GET 的 HTTP 方法,然后继续调试。该脚本是非官方的,虽然旨在通用,但依赖于 HubSpot 的 COS/blog 和元素分类生成的特定主体结构。可能需要更多调试才能使其正常工作。
详情:
这个脚本的工作方式有点笨拙。它不会从 API 或其他有效资源获取博客内容——相反,它会在您滚动时获取 /page/2、/page/3 等的完整 HTML,解析出blog post HTML 从它检索的响应中,并将它在异步提取中找到的 post 注入当前页面。
使用 POST 而不是 GET 来获取此内容会生成 403 Forbidden。
可能存在更多问题,因为脚本在很大程度上取决于以特定方式分类的某些元素,但这解决了您眼前的 403 问题。
我正在 hubspot cos 上建立博客。我们希望博客文章滚动加载。我找到了一个脚本,声明它可以执行此操作并且专门用于 Hubspot。
也就是说,当我通过滚动激活脚本时,我在控制台中收到 403。我认为这不像 Ajax 问题那么严重。
我使用的脚本: 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 = {};
})()
TL;DR -- 您收到 403 是因为脚本使用的是 jQuery 的 .post
而不是 .get
;不允许使用 http POST 到 HubSpot COS/blog 页面。这出现在此处原始 js 示例的第 45 行:http://www.uvm.edu/~enewbury/swoosh/swoosh.js
关闭 GET 的 HTTP 方法,然后继续调试。该脚本是非官方的,虽然旨在通用,但依赖于 HubSpot 的 COS/blog 和元素分类生成的特定主体结构。可能需要更多调试才能使其正常工作。
详情: 这个脚本的工作方式有点笨拙。它不会从 API 或其他有效资源获取博客内容——相反,它会在您滚动时获取 /page/2、/page/3 等的完整 HTML,解析出blog post HTML 从它检索的响应中,并将它在异步提取中找到的 post 注入当前页面。
使用 POST 而不是 GET 来获取此内容会生成 403 Forbidden。
可能存在更多问题,因为脚本在很大程度上取决于以特定方式分类的某些元素,但这解决了您眼前的 403 问题。