特異な要望を頂いたのでRailsというフレームワーク的に対応しているかの実証実験メモ。
大前提
こんな実装はおすすめできないので、素直にHTMLを表示するだけならGETリクエストを使うようにしてください…。
環境
$ bin/rails -v
Rails 5.2.2
検証
ControllerとViewをつくる
▼ app/controllers/articles_controller.rb
class ArticlesController < ApplicationController # 直接curlするとCSRFトークンがないエラーが出てしまうのでスキップ指定 protect_from_forgery except: :create def create render end end
※たぶんCSRFトークンを事前に知らせるのは難易度高いので別の方法でセキュリティは担保する
▼app/views/articles/create.html.erb
<h1>Articles#create</h1> <p>post and render html!!!!!</p>
※layoutとかは説明省略
curlしてみる
localhostで起動
$ bin/rails s
curlしてみる
$ curl -X POST localhost:3000/articles <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <HTML> <HEAD><TITLE>Length Required</TITLE></HEAD> <BODY> <H1>Length Required</H1> WEBrick::HTTPStatus::LengthRequired <HR> <ADDRESS> WEBrick/1.4.2 (Ruby/2.5.0/2017-12-25) at localhost:3000 </ADDRESS> </BODY> </HTML>
length-headerがないと怒られる、ので適当にパラメータをつける
$ curl -X POST localhost:3000/articles -d "example=test" <!DOCTYPE html> <html> <head> <title>SampleApp</title> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="9gBv+fU3rLT7r57+yi6C/mZIGN8Pw4DNsdkdJTrrRwmxu4ftWOElOQGJIFg11hwwbaD8dH2wE5crqgFYpp2gew==" /> <link rel="stylesheet" media="all" href="/stylesheets/application.css" /> </head> <body> <h1>Articles#create</h1> <p>post and render html!!!!!</p> </body> </html>