【发布时间】:2016-11-08 22:03:15
【问题描述】:
抱歉,如果这是一个迂回的方式来问这个问题,但我对网络和 javascript 的工作方式有点困惑。
我想做什么:在我找到的 url 列表的所有页面上执行 javascript。 (专门使用 jquery 从他们那里提取信息)
问题我无法在这些页面上执行 Javascript,因为它们不是我的并且没有 Access-Control-Allow-Origin 标头。所以我无法加载它们(使用 AJAX)以便在它们上使用 JQuery。
但是 Google Chrome 既可以加载页面,也可以在其上执行 javascript(使用他们的开发者控制台)。因此,如果我也想要,我可以转到每个页面,打开开发人员控制台,然后从那里提取信息。如果没有什么可以阻止 Chrome 访问这些,那我为什么要停止呢?而且,有没有办法解决这个问题?
谢谢,我希望我的描述是有道理的。我已经对此进行了一段时间的研究,但没有发现任何可以解释 CORS 看似不一致的原因。
【问题讨论】:
-
因为……ajax受同源策略限制,但是你直接用浏览器访问页面没有这个限制……
-
浏览器默认不允许站点 A 从站点 B 加载内容,因为用户可能已经登录到站点 B 并且可以访问站点 A 不应窃取的个人信息。正在进行工作以允许站点 A 从站点 B 匿名加载内容,以避免安全问题,但这尚未标准化。
-
@apsillers 我想我自己搞糊涂了,这是不可能的——the Fetch spec 中的
no-cors选项允许来自 Service Worker 的跨域请求,但除非传递给适当来源的页面。哎呀。crossorigin=anonymous属性创建内部匿名跨域请求,就像我描述的那样,我认为 Fetch 规范正在扩展以描述该行为,但是 AFAIK 它不会通过公共 fetch API 公开,所以我说的是错误的。 -
使用 tampermonkey 在任何域上运行您自己的脚本
标签: javascript jquery ajax google-chrome