【发布时间】:2018-01-21 06:57:05
【问题描述】:
我不明白我想问的某些事情。
场景 1:我创建了一个 HTML/JavaScript 网站,在其中我使用 AJAX 获取 Google.com 的 HTML,我遇到了臭名昭著的跨域问题 (No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.)
场景 2:我输入 www.google.com,我在上下文菜单中选择 Source Code 并获得输入代码。
以下是问题:
此消息(及其含义)有什么用途?当我可以通过浏览器请求同一个网站时,谷歌如何保护我免受我的邪恶脚本的侵害?请求不一样吗?
当来源是浏览器、我的笔记本电脑、我的路由器、我的 ISP、互联网和谷歌时,方案 1 和方案 2 之间的来源差异如何。
为什么以及是谁发明了区分本地脚本和浏览器本身的方法,它的用途是什么?如果请求是恶意的,那么在这两种情况下都同样是恶意的。
Google 如何知道它的来源以及它与我通过地址栏请求他们的网站有何不同?再次,完全相同的来源。
【问题讨论】:
-
我之前也有同样的问题,但我不记得所有的答案(那个人在我脑海里说),但我记得的一件事是,如果你可以在你的域之外使用 AJAX ,那么您可能会通过向“file:///Users/...”发送请求来访问用户文件。我想我仍然不明白为什么在不阻止访问其他网站的情况下无法阻止这种情况。
-
我在这上面浪费了 3 天。那些 3 天非常糟糕的地方。我启用了cors和一切。我认为在使用 localhost 时会导致这种情况。
-
是的,但
file:///Users/立即表示本人。如果您请求file:///,您绝对不会请求外国网站。您尝试访问自己的文件系统。所以这对我来说仍然没有意义。 -
@J.Doe,如果您让某人在他们自己的系统上打开一个 html 文档并且它可以向您的文件系统发出请求,那么对他们做一些事情或将他们/其中的数据发送到另一个网址。那可能很危险。但同样,我假设浏览器能够区分对文件系统和另一个网站的请求。
标签: javascript ajax web cors