What
これは何か
Google Form の為だけのCORSエンドポイントです。 これを活用する事で、クロスオリジンの制約を回避し、フロントエンドだけで Google Form へリクエストを送信できます。
Google Form以外へのリクエストは送信する事はできません。
How
どう働くか
GhostForm の送信用エンドポイントURLに、要件を満たしたリクエストを送れば Google Form のフォームに転送されます。
Request
Endpoint URL |
https://ghostform.net/api/v1/submit
|
---|---|
method |
POST
|
Content-Type |
application/json
|
RequestBody (JSON)
url | string |
---|---|
Google Form の送信先URL
|
|
data | { [key: string]: string } |
送信するフォームデータ
|
リクエストボディの情報は、上のフォーム(または こちら)から解析するか、あるいは Google Form のページで devtool などを使ってマニュアルで抽出します。
Errors
GhostForm 側での検査時にエラーが発生した場合、ステータスコード 400
とエラーメッセージが返されます。
Google Form への送信時にエラーが発生した場合も同様にエラーが返されますが、エラーメッセージは返されず、Google Form リクエスト時のレスポンス本文が返されます。
INVALID_CONTENT_TYPE_ERROR |
Content-Type ヘッダーが正しくない
|
---|---|
INVALID_PROPS_ERROR | リクエストボディが、正しくプロパティを備えていない |
INVALID_PROPS_TYPE_ERROR | リクエストボディのプロパティの型が正しくない |
INVALID_URL_ERROR |
url が正しい Google Form のURLではない
|
INVALID_DATA_KEY_ERROR |
data のキーが正しい名前ではない
|
INVALID_DATA_VALUE_TYPE_ERROR |
data の値が正しい型ではない
|
Good
良い点
- サーバーサイドを書かずに Google Form にリクエストを送信できる
- iframe を利用したハックと異なり、フォーム送信の失敗を検知できる
Bad
悪い点
- Google Form に起因して送信に失敗した場合、「どの項目で、なぜ失敗したか」を取得できない
- Google Form を採用するメリットの一つでもある「自由に項目を編集できる」点がころされてしまう (編集する度にフロントのコードは書き直さなければいけない)
Why
なぜ作ったか
2021年1月まで、この目的においては cors-anywhere が有用でしたが、 便利なあまりユーザーの濫用が増加したためにホスティングしている Heroku から止めるように要求があり、現在では開発目的での使用に制限されるようになったそうです。 ( 参考 ) そこで用途を可能な限り狭めたGoogle Form専用のプロキシサービスを開発するに至りました。
しかしながら、このサービスは実験の成果物に過ぎず、Google Formへ外部からリクエストを送信する手法の有用性を示すものではありません。 作者はこのサービスを使用を敢えて薦めません。 あなたの要件を満たすに適したソリューションは、きっと他にあるでしょう。
Policy
規約・免責など
利用規約
以下の規約に同意いただける方のみ当サービスをご利用ください。(ご利用いただいた時点で、規約に同意いただいたものと致します)
- 商用・非商用に関わらず無償でご利用いただけます。
- 過度なアクセス等、当サービスに悪影響を及ぼす物につきましては一時的・部分的に制限を掛けさせていただく場合がございます。
- 当サービスの運営は可能な限りの正確性と安定性に務めますが、完全に安定した機能の提供を約束するものではありません。
- 当サービスは作者の都合により、予告なく変更・停止・閉鎖させていただく場合がございます。
- 当サービスをご利用いただいた事、または利用できない状態になった事による一切の損害について、責任は負いません。
プライバシーポリシー
- 本サービスでは、サイトにアクセスされた個人から必要な範囲内で個人情報を収集する事があります。収集にあたっては適法かつ公正な方法によってこれを行います。
- Google Form との間で送受信されたデータに関して、本サービスは収集・保管を行わず、一切の関与をいたしません。