Chrome 中的文件 URL 跨域问题 - 意外

发布于 2024-11-08 23:20:03 字数 476 浏览 1 评论 0原文

问题是 Chrome 在使用文件 url 时抛出跨域错误

我正在使用带有相对路径形式的 data 属性的对象标记将 svg 文档嵌入到 HTML 中,在 onload 事件上我想使用 getSVGDocument() 获取 SVGDocument 。

我正在使用文件 url 访问 html 文件,当调用 getSVGDocument 时,Chrome 给出跨域错误。 Chrome 实际上嵌入了 SVG,但 getSVGDocument 不会返回 SVG 的 DOM

Chrome 错误是 “不安全的 JavaScript 尝试从 URL file:///C:/MyFiles/website/Dir1/index.html 的框架访问 URL file:///C:/MyFiles/website/Dir1/a.svg 的框架 域、协议并且端口必须匹配。”

正如您所看到的,html 和嵌入文档 svg 的基本路径是相同的,那么为什么 Chrome 会抛出此错误呢?

The issue is about Chrome throwing Cross Domain Error on using file url

I am embedding a svg document into a HTML using the object tag with the data attribute in the form of relative path, upon onload event I want to get the SVGDocument using getSVGDocument().

I am accessing the html file using file url, when getSVGDocument is called, Chrome gives a Cross Domain Error. Chrome actually does embed the SVG but getSVGDocument does not return the DOM for the SVG

The Chrome Error is
"Unsafe JavaScript attempt to access frame with URL file:///C:/MyFiles/website/Dir1/a.svg from frame with URL file:///C:/MyFiles/website/Dir1/index.html Domains, protocols and ports must match."

As you may see the base path is same for both the html and the embedded document svg, so why does Chrome throw this error ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

对你而言 2024-11-15 23:20:03

您遇到了 Chrome 的跨域/文件安全限制。

您可以按照在 Chrome 中禁用同源策略中的说明和详细信息来禁用此功能在 如何可以访问 Chrome 中的原始策略,因为我没有使用服务器来了解如何在关闭这些功能的情况下启动 Chrome。

不过,请注意:它们被称为“安全限制”是有原因的,因此在浏览第 3 方网站时不要应用此限制。 正常浏览网页时关闭此功能极其危险例如,关闭此功能后,我现在可以代表您向 gmail.com、facebook 等网站发出请求.com 和 yourbank.com,并且您的 cookie 将被设置为允许我伪装成您自己。

如果您仍然确实需要此功能,则需要使用 --disable-web-security 标志运行 chrome:

chrome --disable-web-security # unix/linux only

如果您需要有关如何应用该标志的跨操作系统说明,请参阅 http://www.chromium.org/developers/how-tos/run-chromium-带标志

You are hitting the cross domain/file security limitations of Chrome.

You can, disable this by following the instructions in Disable same origin policy in Chrome and details in How can access and the origin policy in chrome as I'm not using a server on how to start Chrome with these turned off.

A word of warning, though: they are called "security limitations" for a reason so do not go applying this when browsing 3rd party sites. This is extremely dangerous to turn off whilst browsing the web normally. For example, with this turned off I can now make requests on your behalf to sites like gmail.com, facebook.com and yourbank.com, and your cookies will be set allowing me to masquerade as yourself.

If you still really need this, you need to run chrome with the --disable-web-security flag:

chrome --disable-web-security # unix/linux only

If you need cross OS instructions on how to apply the flag, see http://www.chromium.org/developers/how-tos/run-chromium-with-flags.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文