Po přechodu na HTTPS se ztrácí soubory posílané přes POST

Matouš
Člen | 3
+
0
-

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)

pux
Člen | 14
+
0
-

Můžeš přidat kód, kterým vytváříš, zpracováváš a vykresluješ formulář?

Osobně používám na redirect HTTP > HTTPS toto:

RewriteCond %{ENV:HTTPS} !^.*on
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
dakur
Člen | 493
+
0
-

@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?

Matouš
Člen | 3
+
0
-

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
+
+1
-

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)