如何阻止重定向的 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 设置中列入白名单。”

重定向被 CORS 阻止

从源“null”访问 Twitter_OAuth_Url(从“http://localhost:3000/api/twitter-login”重定向)的 XMLHttpRequest 已被阻止

如何阻止 Chrome 重定向到 HTTPS?