【问题标题】:Can I use https for local development?我可以使用 https 进行本地开发吗?
【发布时间】:2014-11-30 15:36:10
【问题描述】:

我正在尝试对 Google Developer's website 中所述的 Google+ 网络登录服务器端流程稍作改动。

Google 的 gapi 代码给出了以下错误消息:

未捕获的安全错误:阻止来源为“http://my-development-system.dev”的框架访问来源为“https://accounts.google.com”的框架。请求访问的帧具有“http”协议,被访问的帧具有“https”协议。协议必须匹配。

我说我的本地开发系统不能设置为使用 https 协议对吗?

【问题讨论】:

  • 错误提示您使用 HTTPS。您的意思是您不想为受信任的证书付费?您是否发现自签名证书存在问题?
  • 我将它与 apache 一起使用,但必须生成我自己的证书
  • 但是阅读错误告诉我你根本没有使用 https。生成您的证书,将 apache 配置为使用 ssl,然后重试。

标签: javascript google-oauth same-origin-policy


【解决方案1】:

这不仅与不同的协议有关(您网站上的 HTTP 与 accounts.google.com 上的 HTTPS),还因为域不匹配(以及端口不匹配),这是由 @987654321 施加的限制@。

此策略阻止 www.evil.com 在框架集(或如果框架被禁用,则弹出窗口)内加载诸如 www.bank.com 之类的站点,然后访问 DOM。如果可以访问 DOM,这将是一个巨大的安全风险,因为任何网站都可以读取您在另一个网站上的私人数据。

可以通过实施CORS 策略并输出服务器端标头以允许其他指定域读取内容来允许访问,但是在您的情况下这将在 Google 方面。因此,除非https://accounts.google.com 实施CORS 策略,否则您将无法对服务器端流程进行客户端变体。另一个障碍是,即使实现了 CORS,它也不允许访问 DOM。但是,您可以通过 AJAX 调用从另一个域、协议或端口检索内容。目标站点还必须输出 Access-Control-Allow-Credentials: true 标头,以便身份验证凭据(即本例中的 cookie)与请求和您的域读取的响应一起发送。

我可以使用 https 进行本地开发吗?

要回答您最初的问题,答案是肯定的。对于大多数用途,这可以是自签名证书,并且不会影响浏览器中的此特定错误消息(作为您,作为浏览器用户已选择接受并信任该证书)。

【讨论】:

    【解决方案2】:

    我说错了

    我的本​​地开发系统无法设置为使用 https 协议

    可以!只需使用自我认证 SSL。

    【讨论】:

    • 这不应该是选择的答案。选择的答案应该去@SilverlightFox。他们很好地解释了其工作原理背后的理论,并回答了这个问题(3 天前)。
    猜你喜欢
    • 2012-02-16
    • 1970-01-01
    • 2014-08-22
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2015-07-06
    • 1970-01-01
    相关资源
    最近更新 更多