我正在尝试Google Developer's website上所述的Google+网络登录服务器端流程的细微变化。
Google的gapi代码给出了此错误消息:
未捕获的安全错误:阻止了源为[http://my-development-system.dev”的帧访问源为“ https://accounts.google.com”的帧。请求访问的帧的协议为“ http”,正在访问的帧的协议为“ https”。协议必须匹配。
我是不是说我的本地开发系统无法设置为使用https协议?
这不仅与不同的协议(站点上的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进行本地开发吗?
要回答您的原始问题,答案是肯定的。在大多数情况下,它可以是自签名证书,并且不会影响浏览器中的此特定错误消息(就像您一样,因为浏览器用户选择接受和信任证书)。
我说错了>
我的本地开发系统无法设置为使用https协议
可以!只需使用自我认证SSL。