微信掃碼登陸在chrome瀏覽器失敗
瀏覽器會提示:(新版本的瀏覽器會提示)
Unsafe JavaScript attempt to initiate navigation for frame with URL ‘http://www.xxx.xxx/’ from frame with URL “https://open.weixin.com/xxxxxxx” The frame attempting navigation is targeting its top-level window, but is neither same-origin with its target nor is it processing a user gesture
大概意思是:瀏覽器監測到了iframe中存在不安全的連結正在嘗試進行導航,
1. 再來看微信掃碼登陸的js檔案:wxLogin.js
2. 該檔案中對與iframe處理上述安全問題的屬性sendbox是沒有新增的
3. iframe預設情況下:
在html5頁面中,可以使用iframe的sandbox屬性,
<iframe src="http://alibaba.com" sandbox>
sandbox後面如果不加任何值,就代表採用預設的安全策略,即:iframe的頁面將會被當做一個獨自的源,同時不能提交表單,以及執行javascript指令碼,也不能讓包含iframe的父頁面導航到其他地方,所有的外掛,如flash,applet等也全部不能起作用。簡單說iframe就只剩下一個展示的功能,正如他的名字一樣,所有的內容都被放入了一個單獨的沙盒。
.
4. sendbox包含的屬性及作用:
allow-forms 允許進行提交表單
allow-scripts 執行執行指令碼
allow-same-origin 允許同域請求,比如ajax,storage
allow-top-navigation 允許iframe能夠主導window.top進行頁面跳轉
allow-popups 允許iframe中彈出新視窗,比如,window.open,target=”_blank”
allow-pointer-lock 在iframe中可以鎖定滑鼠,主要和滑鼠鎖定有關
.
5. 修改wxLogin.js如下: