Javascript 拒绝显示帧,因为它将X-frame-Options设置为';android webview中的拒绝

Javascript 拒绝显示帧,因为它将X-frame-Options设置为';android webview中的拒绝,javascript,android,html,webview,android-webview,Javascript,Android,Html,Webview,Android Webview,当我尝试在webview中显示google日历时,它显示一些错误: [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&foll

当我尝试在webview中显示google日历时,它显示一些错误:

[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&ltmpl=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&amp;ctz=Asia/Hong_Kong&amp;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); 
StringBuilder sb=新建StringBuilder();
sb.append(“img{display:inline;height:auto;max-width:100%}iframe{width:100%}”);
sb.追加(page.page_content_chi.toString());
某人加上(“”);
webview.loadDataWithBaseURL(“file:///android_asset/,sb.toString(),“text/html”,“utf-8”,null);

如何修复错误?谢谢您的帮助。

您需要公开您的日历。这就是正在发生的事情——由于您试图显示的日历没有公开共享,Google calendar首先想知道您是谁,以便决定向您显示什么,因此它会将您发送到Google登录页面。登录页面通过禁止在iframe中显示自己来防止点击劫持(这就是
'X-Frame-Options'设置为'DENY'
的意思)

如果您使日历公开可见,日历将只显示它,而不尝试先让您登录。关于如何共享日历,请参见以下内容:


通过创建一个简单的测试页面,将日历嵌入iframe中,然后在Google Chrome的匿名窗口中打开日历,您可以在桌面上测试这是否在WebView中起作用。Chrome还将拒绝显示日历,直到您将其公开共享

如果您的日历不公开,请确保您已登录并且接受第三方cookie。否则,谷歌会将您转发到登录页面,这将导致错误,因为在iframe中,谷歌会拒绝访问。

我在尝试在android的webview上加载youtube页面时遇到类似问题。在这种情况下,我如何解决问题?在这种情况下,让日历公开是什么意思?