Na poziomie aplikacji, można dodać to w pliku application_controller.rb
before_filter :reject_methods
def reject_methods
if ['TRACE','PATCH'].include?(request.method)
#raise ActionController::RoutingError.new('Not Found')
raise ActionController::MethodNotAllowed.new('Method not allowed') #405
# or whatever you want to do (redirect, error message, ...)
end
end
Albo można spróbować z https://github.com/jtrupiano/rack-rewrite (sprawdzić dowolny przepisanie) z czymś takim (nie testowane):
rewrite %r{(.*)}, lambda { |match, rack_env|
rack_env["REQUEST_METHOD"] == "TRACE" ? "405.html" : match[1]
}
Albo można użyć jesteś właścicielem middleware umieszczając to w ./lib pliku:
module Rack
class RejectMethods
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
if env["REQUEST_METHOD"] == "TRACE" || env["REQUEST_METHOD"] == "PATCH"
body.close if body.respond_to? :close
[status, headers, []]
else
[status, headers, body]
end
end
end
end
i nazywają to w environment.rb
config.autoload_paths += %W(#{config.root}/lib)
config.middleware.use "RejectMethods"
** Aktualizacja: ** Heroku ma zdobyć z powrotem do mnie, mówiąc, że nie jest to możliwe na koniec. Więc teraz jest pytanie o odrzucenie na poziomie aplikacji. – Forrest
Czy było to w porządku w przypadku Intuit, czy też dysponowałeś serwerami przenoszenia? –