[英]Why does Zend Framework 2 use application/x-www-form-urlencoded for put request?
[英]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.