![](/img/trans.png)
[英]Refused to display 'URL' in a frame because it set 'x-frame-options' is set to 'deny'. But i am not using iFrame
[英]Refused to display a frame because it set X-Frame-Options to 'DENY in android webview
當我嘗試在 webview 中顯示谷歌日歷時,它顯示一些錯誤:
[INFO:CONSOLE(0)] "Refused to display 'https://accounts.google.com/ServiceLogin?service=cl&passive=1209600&continue=https://www.google.com/calendar/embed?src%3Detlwhk@gmail.com%26ctz%3DAsia/Hong_Kong&followup=https://www.google.com/calendar/embed?src%3Detlwhk@gmail.com%26ctz%3DAsia/Hong_Kong&btmpl=mobile<mpl=mobilex&scc=1' in a frame because it set 'X-Frame-Options' to 'DENY'.", source: about:blank (0)
這是 html 代碼
<p><iframe style="border: 0;" src="https://www.google.com/calendar/embed?src=etlwhk%40gmail.com&ctz=Asia/Hong_Kong&output=embed" width="800" height="600" frameborder="0" scrolling="no"></iframe></p>
對於 android 端,它是一些簡單的 webview 代碼
StringBuilder sb = new StringBuilder();
sb.append("<HTML><HEAD><meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'><style>img{display: inline; height: auto; max-width: 100%}iframe{width:100%}</style></HEAD><body>");
sb.append(page.page_content_chi.toString());
sb.append("</body></HTML>");
webview.loadDataWithBaseURL("file:///android_asset/", sb.toString(), "text/html", "utf-8", null);
如何修復錯誤? 謝謝你的幫助。
您需要公開您的日歷。 這就是正在發生的事情——由於您嘗試顯示的日歷未公開共享,因此 Google 日歷首先想知道您是誰,以便決定向您展示什么,因此它會將您發送到 Google 登錄頁面. 登錄頁面通過禁止在 iframe 中顯示自己來保護自己免受點擊劫持(這就是'X-Frame-Options' is set to 'DENY'
意思)。
如果您將日歷設為公開可見,日歷只會顯示它,而不會先嘗試讓您登錄。 關於如何共享日歷,請參見: https : //support.google.com/calendar/answer/37083
您可以通過創建一個將日歷嵌入 iframe 的簡單測試頁面,然后在未登錄 Google 服務的 Google Chrome 隱身窗口中打開它,在桌面上簡單地測試這是否適用於 WebView。 在您公開共享日歷之前,Chrome 也將拒絕顯示日歷。
如果您的日歷不是公開的,請確保您已登錄並接受第三方 cookie。 否則 google 會將您轉發到登錄頁面,這將導致錯誤,因為在 iframe 中,google 將拒絕訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.