Übergabe von Daten an den Axios-Dienst
In diesem Szenario besteht das Ziel darin, Formulardaten von der loginService-Komponente an die Services/Index-Komponente zu übergeben um auf _boundary in den Headern der Axios-Instanz zuzugreifen. Der Schlüssel dazu liegt darin, zu verstehen, wie Anforderungstexte von HTTP-Clients verarbeitet werden.
HTTP-Anforderungstextverarbeitung
Bei HTTP-Anfragen mit FormData legt der Client automatisch fest den Content-Type-Header zu multipart/form-data und enthält die entsprechenden Grenztoken. In ähnlicher Weise wird für URLSearchParams Content-Type auf application/x-www-form-urlencoded gesetzt.
Behebung des Axios-Problems
In Ihrem Fall möchten Sie _boundary im Header manuell festlegen. Da wir FormData jedoch bereits verwenden, wird die Laufzeit dies automatisch verarbeiten. Sie können diesen Schritt überspringen, wenn Sie Axios v0.27.1 oder früher verwenden.
Node.js-Überlegungen
Bei der Verwendung von Axios in Node.js werden FormData-Header nicht abgeleitet automatisch. Als Workaround können Sie einen Request-Interceptor verwenden:
<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>
Alternativ führen Sie die Header manuell zusammen, während Sie die Anfrage stellen.
jQuery-Überlegungen
Wenn Sie jQuerys $.ajax() oder praktische Methoden wie $.post() verwenden, ist es wichtig, contentType und processingData auf false zu setzen, um eine automatische Serialisierung zu verhindern und das FormData-Format beizubehalten:
<code class="javascript">$.ajax({ url, method: "POST", data: body, contentType: false, processData: false })</code>
Vermeiden Sie die Axios-Versionen 0.27.1 und 1.0.0
Diese spezifischen Versionen von Axios haben bekannte Probleme bei der Verarbeitung von FormData. Wir empfehlen stattdessen die Verwendung von Fetch, got oder ky.
Das obige ist der detaillierte Inhalt vonSo übergeben Sie Formulardaten mit Axios: Sollte ich _boundary manuell festlegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!