2014-10-06 71 views
5

我試圖在Google Developer's website上所述的Google+網絡登錄服務器端流程略有變化。說得對,我的本地開發系統不能被設置爲使用https協議我可以使用https進行本地開發嗎?

Uncaught SecurityError: Blocked a frame with origin " http://my-development-system.dev " from accessing a frame with origin " https://accounts.google.com ". The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "https". Protocols must match.

我是:

谷歌的GAPI代碼是給這個問題?

+2

錯誤說你*不*使用HTTPS。你的意思是說你不想支付可信任的證書嗎?您是否發現自簽證書的問題? – 2014-10-06 11:26:20

+0

我使用它與Apache,但必須生成我自己的證書 – Quince 2014-10-06 11:26:37

+2

但讀取錯誤告訴我,你根本沒有使用HTTPS。 生成您的證書,配置apache使用ssl並重試。 – 2014-10-06 11:27:50

回答

0

我說

my local development system cannot be set up to use the https protocol

它可以是錯誤的!只需使用自我認證SSL。

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)。

Can I use https for local development?

要回答您的原始問題,答案是肯定的。這可以是大多數用途的自簽名證書,並且不會影響瀏覽器中的此特定錯誤消息(因爲您正如瀏覽器用戶選擇接受並信任該證書一樣)。

相關問題