ホームページ >ウェブフロントエンド >jsチュートリアル >Axios でフォーム データを渡す方法: _boundary を手動で設定する必要がありますか?

Axios でフォーム データを渡す方法: _boundary を手動で設定する必要がありますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 05:37:01348ブラウズ

How to Pass Form Data with Axios: Should I Set _boundary Manually?

Axios サービスへのデータの受け渡し

このシナリオの目的は、フォーム データを loginService コンポーネントから Services/index コンポーネントに渡すことです。 Axios インスタンスのヘッダーの _boundary にアクセスします。これを達成するための鍵は、HTTP クライアントによるリクエスト本文の処理方法を理解することにあります。

HTTP リクエスト本文の処理

FormData を使用して HTTP リクエストを行う場合、クライアントは自動的にContent-Type ヘッダーを multipart/form-data にコピーし、適切な境界トークンを含めます。同様に、URLSearchParams の場合、Content-Type を application/x-www-form-urlencoded に設定します。

Axios の問題の修正

あなたの場合、次のことを行います。ヘッダーに _boundary を手動で設定します。ただし、すでに FormData を使用しているため、ランタイムがこれを自動的に処理します。 Axios v0.27.1 以前を使用している場合は、この手順をスキップできます。

Node.js の考慮事項

Node.js で Axios を使用する場合、FormData ヘッダーは推論されません自動的に。回避策として、リクエスト インターセプタを使用できます。

<code class="javascript">axios.interceptors.request.use(config => {
  if (config.data instanceof FormData) {
    Object.assign(config.headers, config.data.getHeaders());
  }
  return config;
}, null, { synchronous: true });</code>

または、リクエストの作成中にヘッダーを手動でマージします。

jQuery に関する考慮事項

jQuery の $.ajax() または $.post() などの便利なメソッドを使用する場合、自動シリアル化を防止し、FormData 形式を保持するために contentType と processData を false に設定することが重要です:

<code class="javascript">$.ajax({
  url,
  method: "POST",
  data: body,
  contentType: false,
  processData: false
})</code>

Axios バージョン 0.27.1 および 1.0.0 を避ける

Axios のこれらの特定のバージョンには、FormData の処理に関する既知の問題があります。代わりに Fetch、got、または ky を使用することをお勧めします。

以上がAxios でフォーム データを渡す方法: _boundary を手動で設定する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。