Po přechodu na HTTPS se ztrácí soubory posílané přes POST
- Matouš
- Člen | 3
Ahoj, po nasazení šifrování HTTPS s certifikátem Let's Encrypt na
serveru Wedos se mi na straně serveru někde ztrácí soubory posílané
metodou POST. Problém nastává jak u klasických formulářů při importu
souborů, tak při strohém odesílání souboru javascriptem na server typu
multipart/formdata. Nette například při volání
$this->getHttpRequest()->getFiles()['file']->isOk()
vrací
varování Undefined array key „file“. V jiném případě vyvolá
výjimku Nette\InvalidStateException Cannot send header after HTTP headers
have been sent. prostřednicvím souboru Response.php na řádku 307
throw new Nette\InvalidStateException('Cannot send header after HTTP headers have been sent'). ($file ? " (output started at $file:$line)." : '.'));
Pokud se prostřednictvím formulářů neodesílají soubory, vše proběhne
korektně, v opačné případě se v části laděnky HTTP request
objeví pouze ostatní údaje z formulářů bez odeslaného souboru. Před
nasazením HTTPS na serveru, nebo na localhostu bez šifrování, vše běželo
korektně.
Po aktivaci šifrování na straně webhostingu jsem pouze odkomentoval v souboru .htaccess následující:
RewriteCond %{HTTPS} !on
RewriteRule .? https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Web běží na PHP 8.0 a nasazeno mám aktuální Nette 3.1 updatované přes Composer.
Problém už jsem se snažil řešit s podporou na Wedosu, ale tam mi bohužel nedokázali pomoci.
Editoval Matouš (7. 4. 2021 11:00)
- Matouš
- Člen | 3
dakur napsal(a):
@Matouš Co router, nemáš tam někde natvrdo nastavený HTTP protokol? Při kanonizaci by potom došlo k redirectu. Ale to by se asi nezachovaly ani jiné hodnoty. Do Network panelu v DevTools jsi koukal? Je tam vše OK?
Používám defaultní RouterFactory. Do Network v DevTool jsem koukal především v souvislosti s odesíláním javascriptem a odeslání bylo korektní. Odpověď serveru už samozřejmě s chybovou hláškou. Jinak při vypnuté laděnce na produkčním serveru se mi spolu s errorem 500 vrací hláška File upload error – unable to create a temporary file in Unknown on line 0.
- Matouš
- Člen | 3
Tak jsem problém vyřešil. Nakonec jsem dohledal stejný v diskuzi.
https://help.wedos.cz/…je-wp/39115/
Stačilo pouze přidat složku tmp do kořenového adresáře webhostingového prostoru. Každopádně díky za pomoc.
Editoval Matouš (7. 4. 2021 14:50)