有没有办法在没有iframe的情况下直接提供Heroku错误/维护网址

jum*_*and 6 heroku custom-error-pages maintenance-mode

Heroku的让你把"维护模式"为您的应用程序,也允许你指定在此期间要投放自定义网址.我刚试了一下,发现Heroku在iframe中提供自定义网址.这不是我所期待的.

我们使用Heroku来托管API服务,并计划让自定义错误/维护页面提供json数据.我们希望有一种方法可以直接提供维护网址.

SO搜索后,Quora的,和一般的"互联网络"我还没有看到在问这个问题的任何信息,所以在这里我很张贴.

以下是与我的问题相关的帖子,但不直接解决.

之前的旧文章有任何定制: https://groups.google.com/forum/?fromgroups=#!topic/heroku/EJRtW1XrlpU

帖子要求自定义JavaScript的HTML渲染的iframe: https://groups.google.com/forum/?fromgroups=#!topic/heroku/Db0JEWmuz_w

ma1*_*w28 5

作为一种解决方法,您可以对 Heroku 应用程序进行编程,以便对于它收到的每个请求,它首先(在执行其他任何操作之前)检查特定环境变量是否仅存在,例如,调用 MAINTENANCE. 如果设置,您会立即返回您的自定义 JSON 响应。

例如,在Rack 应用程序call方法的开头添加以下代码块。(对于Sinatra 应用程序,您可以将其添加到before filter的开头。对于Ruby on Rails 应用程序,您可以将其实现为Rack 中间件。)

if ENV['MAINTENANCE']
  status = '503'
  headers = {'Content-Type' => 'application/json'}
  body = ['{"message":"The server is undergoing maintenance. Please try again later."}']
  return [status, headers, body]
end
Run Code Online (Sandbox Code Playgroud)

然后,打开“维护模式”,将您的应用程序的MAINTENANCE环境变量设置为您想要的任何值。

heroku config:set MAINTENANCE=1
Run Code Online (Sandbox Code Playgroud)

要关闭“维护模式”,只需取消设置应用程序的MAINTENANCE环境变量即可。

heroku config:unset MAINTENANCE
Run Code Online (Sandbox Code Playgroud)

瞧!JSON REST API 应用程序的临时维护模式。

  • 请注意,这并不能完全替代本机 Heroku 维护模式,因为它在应用程序重新启动/扩展期间不起作用。 (2认同)

cat*_*sby 2

除了此处概述之外,无法自定义错误页面,该页面使用 iFrame:https: //devcenter.heroku.com/articles/error-pages#customize-pages