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

时间:2014-10-06 11:22:07

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

我正在尝试按照Google Developer's website中的说明略微改变Google+网络登录服务器端流程。

Google的gapi代码提供了此错误消息:

  

未捕获的SecurityError:阻止具有原点“http://my-development-system.dev”的帧访问具有原点“https://accounts.google.com”的帧。请求访问的帧具有“http”协议,被访问的帧具有“https”协议。协议必须匹配。

我是否正确地说我的本地开发系统无法设置为使用https协议?

2 个答案:

答案 0 :(得分:1)

这不仅与不同的协议(您的网站上的HTTP与accounts.google.com上的HTTPS)有关,也是因为域名不匹配(以及该端口的端口),这是由Same Origin Policy

此策略阻止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进行本地开发吗?

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

答案 1 :(得分:0)

我说错了

  

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

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