Mengapa saya mendapat Ralat 301 Moved Permanently apabila menggunakan permintaan POST Berbilang Bahagian/Data?

Susan Sarandon
Lepaskan: 2024-10-26 22:19:29
asal
1009 orang telah melayarinya

Why am I getting a 301 Moved Permanently Error when using Multipart/Form-Data POST requests?

Siaran Berbilang Bahagian/Borang-Data

Apabila cuba MENYATAKAN data menggunakan berbilang bahagian/data-bentuk, mesej ralat seperti yang disediakan boleh dihadapi. Memahami isu tersebut memerlukan pemeriksaan komposisi masalah. Ralat yang dihadapi ialah respons 301 Moved Permanently, yang menunjukkan bahawa sumber telah diubah hala secara kekal. Ini selalunya berlaku apabila pengepala Jenis Kandungan yang betul tidak ditetapkan untuk permintaan berbilang bahagian/data bentuk.

Untuk menyelesaikan isu ini, pastikan pengepala Jenis Kandungan ditetapkan secara eksplisit kepada "data berbilang bahagian/bentuk; charset=UTF-8" semasa membuat permintaan POST. Pengepala ini memberitahu pelayan bahawa permintaan itu termasuk data berasaskan teks dan data binari yang diformatkan mengikut protokol data berbilang bahagian/bentuk.

Di bawah ialah kod Go yang diperbetulkan yang berjaya menetapkan pengepala Jenis Kandungan yang betul:

<code class="go">import (
    "bytes"
    "fmt"
    "io"
    "io/ioutil"
    "mime/multipart"
    "net/http"
)

func NewPostWithMultipartFormData(url string, paramTexts map[string]string, paramFiles []FileItem) ([]byte, error) {
    // Initialize a buffer to write the multipart form data.
    buf := new(bytes.Buffer)
    // Create a new multipart writer.
    w := multipart.NewWriter(buf)

    // Add text parameters to the multipart form.
    for key, value := range paramTexts {
        field, err := w.CreateFormField(key)
        if err != nil {
            return nil, fmt.Errorf("error creating form field '%s': %v", key, err)
        }
        if _, err := field.Write([]byte(value)); err != nil {
            return nil, fmt.Errorf("error writing value to form field '%s': %v", key, err)
        }
    }

    // Add binary parameters to the multipart form.
    for _, file := range paramFiles {
        fileWriter, err := w.CreateFormFile(file.Key, file.FileName)
        if err != nil {
            return nil, fmt.Errorf("error creating form file '%s': %v", file.Key, err)
        }
        if _, err := fileWriter.Write(file.Content); err != nil {
            return nil, fmt.Errorf("error writing content to form file '%s': %v", file.Key, err)
        }
    }

    // Close the multipart writer.
    if err := w.Close(); err != nil {
        return nil, fmt.Errorf("error closing multipart writer: %v", err)
    }

    contentType := w.FormDataContentType()

    // Create a new POST request with the correct Content-Type header.
    req, err := http.NewRequest(http.MethodPost, url, buf)
    if err != nil {
        return nil, fmt.Errorf("error creating HTTP request: %v", err)
    }
    req.Header.Set("Content-Type", contentType)

    // Perform the HTTP request.
    client := http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return nil, fmt.Errorf("error sending HTTP request: %v", err)
    }
    defer resp.Body.Close()

    // Read the response body.
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return nil, fmt.Errorf("error reading HTTP response body: %v", err)
    }

    return body, nil
}</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa saya mendapat Ralat 301 Moved Permanently apabila menggunakan permintaan POST Berbilang Bahagian/Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!