簡體   English   中英

為什么PUT請求需要x-www-form-urlencoded而不能使用form-data?

[英]Why does a PUT request require x-www-form-urlencoded and not work with form-data?

我正在嘗試從PUT請求中檢索數據。

目前我使用以下代碼:

parse_str(file_get_contents("php://input"), $parsedArray);

但這似乎只支持x-www-url-encoded,而不是標准的表單數據,是否有我錯過的解決方法?

如果是任何添加,我對我的API的所有請求都設置了以下標題:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: *");
header("Access-Control-Allow-Methods: OPTIONS, GET, POST, PUT, DELETE");
header("Access-Control-Allow-Headers: Authorization");
header("Content-Type: application/json");

如果需要更多信息我可以提供它,不太確定還有什么可能影響這個?

提前干杯,傑米

我發現了這個,它提供了很好的額外背景(我自己很好奇): PUT vs POST

這不是特定於PUT - POST遇到同樣的問題。

當PHP解析multipart/form-data請求時, php://input不再可用。

這給我帶來了很多問題!

不幸的是,唯一的解決方法是將文件的內容作為表單數據的一部分提交,可能是base64編碼的(因此它不必對所有二進制數據進行urlencode)。 這是一個麻煩,但遺憾的是,這是處理這種特殊情況的唯一方法......

在PHP上存在一些問題。

https://bugs.php.net/bug.php?id=55815

另一方面,正如他們在那里所說,PUT不是上傳文件的正確方法。 這是一個關於在Symfony Framework中解決問題的討論。

https://github.com/symfony/symfony/pull/10381#issuecomment-36726684

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM