質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

1046閲覧

【Vue.js】googleフォームにpostする際、エラーが出る

oscar1164

総合スコア6

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/03/20 06:17

前提

Vue.jsを用いてコンタクトフォームを作成しています。
googleフォーム経由で取得できるようにしたいのですが、400エラーが出てうまくいきません。

実現したいこと

  • googleフォーム経由でお問い合わせ内容の取得

発生している問題・エラーメッセージ

Error: Request failed with status code 400 at createError (webpack-internal:///./node_modules/axios/lib/core/createError.js:16:15) at settle (webpack-internal:///./node_modules/axios/lib/core/settle.js:17:12) at XMLHttpRequest.onloadend (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:66:7)

該当のソースコード

javascript

1<script> 2import axios from "axios"; 3export default { 4 name: "contact", 5 data() { 6 return { 7 form: { 8 name: "", 9 email: "", 10 message: "", 11 }, 12 formInfo: { 13 action: 14 "https://docs.google.com/forms/.../formResponse", 15 name: "entry.20056XXXXX", 16 email: "entry.10457XXXXX", 17 message: "entry.83933XXXXX, 18 }, 19 checked: false, 20 }; 21 }, 22 23 methods: { 24 submitForm() { 25 if ( 26 this.form.name && 27 this.form.email && 28 this.form.message && 29 this.checked 30 ) { 31 const submitParams = new FormData(); 32 33 Object.keys(this.form).forEach((key) => { 34 submitParams.append(this.formInfo[key], this.form[key]); 35 }); 36 37 const CORS_PROXY = "https://sheltered-castle-40244.herokuapp.com/"; 38 const GOOGLE_FORM_ACTION = this.formInfo.action; 39 40 axios 41 .post(CORS_PROXY + GOOGLE_FORM_ACTION, submitParams) 42 .then(() => { 43 console.log("送信しました"); 44 this.$router.push("Thanks"); 45 }) 46 .catch((e) => { 47 console.log(e); 48 alert("送信に失敗しました"); 49 }); 50 } 51 }, 52 }, 53}; 54</script>

試したこと

  • CORSプロキシの設定
  • FormDataを作成して、objectやjsonなどに変更

よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

CSRF(クロスサイトリクエストフォージェリ)はCORSよりも前に覚えるはずの基礎知識。

現代のまともなフォームならそんなやり方で送信できることはない。
プログラムによるフォーム送信は全部スパム扱い。

投稿2022/03/20 07:15

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oscar1164

2022/03/20 08:42

回答ありがとうございます。 google formを用いたお問い合わせフォームの作成はすべてアンチパターンという認識でいいですか? webで検索したら結構出てくるのでメジャーなやり方だと思っていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問