【问题标题】:Cross origin GET from local file://来自本地文件的跨域 GET://
【发布时间】:2011-11-19 05:36:53
【问题描述】:

我正在尝试构建一个 html 文件来监控远程站点上的某些内容 - 特别是 github.com。我希望能够将它保留在那个平面文件中,使请求直接从 JS 发送到 github 的 API。我的思考过程是这样的:

  1. 让我们使用 jsonp,因为我只需要读取权限,所以坚持使用 GET 应该没问题。
  2. 好的,我将使用 Github 的 OAuth 代替基本身份验证!
    • 失败是因为浏览器不喜欢我重定向到本地资源:Not allowed to load local resource: file:///Users/... 出于可以理解的安全原因。
  3. 好的,我将在 iFrame 中加载 Github 的 oauth,然后获取结果 url(其中应该包含我需要的 oauth 代码)。
    • 这失败了,因为如果子 iframe 在另一个域中,您显然无法访问任何有关子 iframe 的内容,因此除非我重定向回 file:///whatever,否则我无法获得最终 url。而且,当然,由于“不允许再次加载本地资源”,我无法重定向到 file:///whatever。
  4. 好的,我将使用跨域资源共享(再次回到基本身份验证)!

那么,关于如何从单个本地 html 文件成功验证此 api 的任何建议 - 作为绕过上述技巧的一种方式,或完全是另一个想法?

【问题讨论】:

    标签: javascript ajax cross-domain jsonp github-api


    【解决方案1】:

    如果您使用的是谷歌浏览器,您可以尝试使用

    --allow-file-access-from-files

    开关已启用。

    【讨论】:

    • 我不认为这会有所帮助 - 如果原点也在 file:/// 内,AFAIK 所做的只是允许 AJAX 加载 file:///
    • @Alnitak,是否可以在您的计算机上运行 Web 服务器?这是我唯一剩下的东西了:(
    • 是的,在检查堆栈溢出之后,运行 Web 服务器是最后的选择。 :) 与这个答案相关,我认为还有一个 chrome 选项可以只允许跨域的东西,虽然我不希望在将它用于普通的东西时不使用它。
    猜你喜欢
    • 2012-01-28
    • 2011-10-31
    • 1970-01-01
    • 2012-11-28
    • 2017-09-15
    • 2010-09-24
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多