如何阻止重定向的 URL 被屏蔽?
Posted
技术标签:
【中文标题】如何阻止重定向的 URL 被屏蔽?【英文标题】:How to stop redirected URL from being masked? 【发布时间】:2019-11-03 05:58:48 【问题描述】:我的谷歌应用程序脚本(附加到谷歌文档)中有一个doGet
函数,它作为网络应用程序发布,我希望将用户重定向到另一个网页。重要的是,我希望将它们重定向的页面的 URL 显示在地址栏中,并将它们重定向的页面的标题作为选项卡的标题(在 Chrome 中)。
我尝试使用元刷新标签,并设置window.location.href
。这两个都正确重定向,但它们在地址栏中显示地址应用程序的 URL,而不是用户被重定向到的页面的 URL。
以下附在 Google 文档中的脚本说明了问题。
function doGet(request)
var drive = DriveApp;
var docs = DocumentApp;
var Id = docs.getActiveDocument().getId();
var document = docs.openById(drive.getFileById(Id).makeCopy().getId());
document.setName("Test doc 2");
var URL = document.getUrl();
return htmlService.createHtmlOutput('<meta http-equiv="refresh" content="0; url=' + URL + '" />')
将脚本发布为 Web 应用程序,然后访问 URL 会将您重定向到新创建的文档,但地址栏中显示的是脚本的 URL。
有关示例,请参阅此 Google 文档:https://docs.google.com/document/d/1HpBkNGGGjKj3W6QXThtGdniSO_UTANo8LcqmgZowdTQ/edit
【问题讨论】:
您的意思是希望 WebApp 重定向到不在 WebApp 内或不在 WebApp 内的页面?也许您可以提供更多代码,以便我们自己确认行为,即minimal reproducible example。 @Cooper 感谢您的回复。我想重定向到由脚本创建的新文档。我已经扩充了代码示例来说明这一点。 【参考方案1】:既然你的 html 是 loaded in a inner iframe,你应该使用
window.top.location = url
加载到顶部框架中。
【讨论】:
以上是关于如何阻止重定向的 URL 被屏蔽?的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 登录消息:“URL 被阻止:此重定向失败,因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。”
“URL 被阻止:此重定向失败,因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。”但在本地工作
Facebook 登录消息:“URL 被阻止:此重定向失败,因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。”
从源“null”访问 Twitter_OAuth_Url(从“http://localhost:3000/api/twitter-login”重定向)的 XMLHttpRequest 已被阻止