フェッチAPIを使用してブラウザから投稿要求を送信しています。ブラウザがmultipart/formdataを強制的に送信する
const headers = new Headers();
headers.append("Content-Type", "application/x-www-form-urlencoded");
fetch('/signup', {
method: 'POST',
body: new FormData(document.querySelector('form')),
credentials: 'same-origin',
headers
}).then(
response => response.text()
).then(
text => console.log(text)
);
私のフォームは、テキスト、メールアドレスとパスワードの入力タイプのみが含まれています。これは私のコードです。私は、フォームデータがcontent-typeアプリケーション/ x-www-form-urlencodedで送信されることを期待していましたが、multipart/formdataとして送信されています。
フェッチリクエストでヘッダーを手動で設定し、フォームのencTypeプロパティを明示的に指定しようとしましたが(デフォルトではURLエンコードする必要があります)、動作しません。
これはChromeとSafariの両方で発生します。私はJSONを使って簡単にこれを回避できますが、なぜこれが起こるのかを知りたいのです! the specから
リクエストのヘッダーを設定しようとしているコードを投稿できますか?もう1つのことは、主要なブラウザの多くでまだサポートされていないということです。だからまだバギーかもしれない。互換性については、次の表を参照してください。https://developer.mozilla.org/en/docs/Web/API/Fetch_API#Browser_compatibility –