Chrome中的文件Url跨域问题 – 意外

这个问题是关于使用文件URL抛出跨域错误的Chrome

我正在embedded一个svg文件到HTML中使用相对path的forms的数据属性的对象标签,onload事件我想要使用getSVGDocument()获取SVGDocument。

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

“Chrome错误”是“不安全的JavaScript尝试从URL文件:/// C:/ MyFiles / website / Dir1 / index的帧中访问具有URL文件的框架:/// C:/MyFiles/website/Dir1/a.svg。 html域名,协议和端口必须匹配。“

正如你可能看到的基本path是相同的HTML和embedded式文件svg,那么为什么Chrome抛出这个错误?

您正在达到Chrome的跨域/文件安全限制。

您可以通过按照Chrome中的禁用相同原产地策略中的说明禁用此function,并详细了解如何 在Chrome中访问和原产地策略,因为我没有使用关于如何启动Chrome 的服务器 。

一个警告的话,他们被称为“安全限制”的原因,所以不要去浏览第三方网站时应用此。 正常浏览网页时closures这个function非常危险 例如,closures此function后,我现在可以代表您向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-with-flags