I could do a PUT relay in browser and in curl
# Gemfiile gem 'rails' gem 'pry' gem 'puma' # app.rb require 'rails' require 'action_controller' require 'rack/handler/puma' class InvalidAuthenticityToken < StandardError end # HelloController class HelloController < ActionController::Base def index render inline: ' <form action="/" method="POST"> <input type="hidden" name="_method" value="put" /> First name:<br> <input type="text" name="firstname" value="Mickey"> <br> Last name:<br> <input type="text" name="lastname" value="Mouse"> <br><br> <input type="submit" value="Submit"> </form> ' end def update raise InvalidAuthenticityToken end def redirect render plain: 'you are redirected' end rescue_from InvalidAuthenticityToken do redirect_to '/you_are_redirected' end end class MyApp < Rails::Application end app = MyApp.new app.config.secret_key_base = 'my-secret' app.initialize! app.routes.draw do get '/' => 'hello#index' get '/you_are_redirected' => 'hello#redirect' put '/' => 'hello#update' put '/you_are_redirected' => 'hello#redirect' post '/you_are_redirected' => 'hello#redirect' # for browser request end Rack::Handler::Puma.run app
Run it
bundle bundle exec ruby app.rb
visit localhost:9292 or
curl -X PUT localhost:9292 -L you are redirected%
I want this to help
source share