由于某种原因,我的ISP阻止了以下网址:
http://assets.tumblr.com/javascript/prototype_and_effects.js
Chrome控制台声明:
Failed to load resource: the server responded with a status of 403 (URLBlocked)
结果是我无法正确使用 Tumblr ,因为许多函数都依赖于此脚本。我已经联系了我的ISP并要求他们停止阻止此网址,但同时我想对此做点什么。
如何在外部加载此资源?它可以是bookmarklet解决方案,userscript / Greasemonkey或你能想到的任何其他东西。
答案 0 :(得分:2)
A 403 status表示服务器(assets.tumblr.com)阻止了请求,而不是您的ISP。服务器执行此操作的最常见原因是(a)因为您没有以足够的访问权限登录,和/或(b)服务器未收到所需的引荐来源标头和/或cookie,和/或(c) )请求来自服务器已列入黑名单的IP地址。使用代理服务器可以触发某些站点的任何或所有这些。
这意味着如果您或您的代理服务器被阻止访问该文件,那么注入远程javascript的标准方法(用户脚本将使用)也将被阻止。
要解决此问题, Greasemonkey可以从本地副本回填javascript文件。要做到这一点:
Insure Tumbler has prototype.user.js
,如下所示。将其放在不在计算机上temp
文件夹中的目录中。prototype_and_effects.js
file并将其放在同一文件夹中。您可能必须使用不同的(或没有代理),或不同的浏览器配置文件,或其他。 (对我来说,只需右键单击前一个链接即可下载。)Prototype
和Effect
库并在本地加载它们(如果缺少一个)。可能需要 来让Tumblr再次工作,但如果是这样,那就超出了这个问题的范围。@resource
的情况下工作,例如直接Chrome。
// ==UserScript==
// @name _Backfill Prototype and Effect libraries on Tumblr pages
// @match http://tumblr.com/*
// @match http://www.tumblr.com/*
// @match https://tumblr.com/*
// @match https://www.tumblr.com/*
// @resource PandE_src prototype_and_effects.js
// @grant GM_getResourceText
// ==/UserScript==
//-- Does this page load prototype_and_effects.js?
var protoScriptNode = document.querySelector ("script[src*='prototype_and_effects']");
if (protoScriptNode) {
//console.log ("Page uses prototype_and_effects.js.");
//-- Are Prototype and Effects loaded?
var P = unsafeWindow.Prototype;
var E = unsafeWindow.Effect;
if (P && P.Version && E && E.BlindDown) {
//console.log ("Everything's loaded, no action needed.");
}
else {
//console.log ("Loading prototype_and_effects.js");
var PandE_src = GM_getResourceText ("PandE_src");
var scriptNode = document.createElement ('script');
scriptNode.type = "text/javascript";
scriptNode.textContent = PandE_src;
var targ = document.getElementsByTagName ('head')[0];
targ.appendChild (scriptNode);
}
}
else {
//-- No action needed
//console.log ("Page doesn't use prototype_and_effects.js.");
}