WebLoader a problémy s nonce
- netteAmater
- Člen | 9
Zdravím,
mám jeden takový dotaz s věci, na které jsem se zasekl. Používám webloader ve verzi s commitem pro nonce viz. https://github.com/…39f3d68a7b81.
Problém na webu mám v tom, že v kódu jsou i javascripty, co nejsou v souborech a zároveň mají nastavené nonce. A já jsem zatím nepřišel na to, jak dostat do nonce od souborů z webloaderu stejnou hodnotu, co mají ty tagy nebo případně i něco dalšího, co není produkt webloaderu. Setkal se někdo s tímto problémem? Díky za případné rady.
- Michalek
- Člen | 206
Ale jo, setkal. Řešení nevím jestli je dobré, ale funguje :)
{control jsFrontend|cspNonce:$this->global->uiNonce}
public static function cspNonce($text, $nonce) {
return str_replace('<script', '<script nonce="' . $nonce . '"', $text);
}
Editoval Michalek (1. 12. 2022 18:28)
- Gappa
- Nette Blogger | 191
Pak lze ještě použít fork v této verzi:
Je tam ale víc změn, které nemusí být žádoucí (oproti té klasické původní verzi).
Nebo jen vyzobat úpravy:
- https://github.com/…a9fa343a5fbe
- Kromě souborů
composer.json
aWebLoader/Nette/Extension.php
.
- Gappa
- Nette Blogger | 191
d@rkWolf napsal(a):
@Gappa Zdar, dá se ten tvůj fork nějak requirovat Composerem? Nedaří se mi na to přijít.
Takto:
composer.json
"repositories": [
{
"type": "vcs",
"url": "https://github.com/Gappa/WebLoader"
},
}
Nějak jsem se nikdy nedostal k tomu, aby se z toho stal samostatný balíček :)
- d@rkWolf
- Člen | 151
@Gappa asi se mi to povedlo, nainstaloval jsem v5.1, protože to mám teď na php7.4, akorát v adminu mi to háže error u externího js scriptu:
Argument 1 passed to WebLoader\Nette\JavaScriptLoader::getElement() must be an instance of WebLoader\File, string given, called in D:\Data\web\3_ostatni\admin-v2\vendor\janmarek\webloader\src\Nette\WebLoader.php on line 90
Ten je zadaný normálně takto, v readme je to taky tak:
remoteFiles:
- https://cdn.ckeditor.com/4.21.0/full-all/ckeditor.js
Extension je nutné registovat takto? Protože u commitu verze 3.0.3 bylo napsáno, že už se ručně posílat wwwDir a debugMode nemusejí a v readme to taky není, ale bez toho mi registrování extension hlásí, že dostává 0 parametrů a chce přesně 3.
extensions:
webloader: WebLoader\Nette\Extension(%appDir%,%wwwDir%,%debugMode%)
Jsou tam nějaké nové funkce? Nedá se to třeba nastavit, aby to na dev propisovalo JS soubory bez spojování a přejmenování? Prostě jen vzít tak jak jsou a vložit-líp se v tom hledají chyby, než v jednom obřím sloučeném souboru.
- Gappa
- Nette Blogger | 191
Podpora pro remoteFiles byla odstraněna – nepoužívalo se to (snaha mít vše lokálně), při úpravách kódu se to odstranilo. Řešením je nalinkovat ručně.
Parametry je v této verzi nutné předat, jsou přiznané v konstruktoru, je to čistší:
Popisy jedině asi tady, nikdy nebyl důvod/motivace/čas psát cokoliv lepšího:
- d@rkWolf
- Člen | 151
@Gappa aha, infa o odstranění těch remoteFiles jsem si tam nikde nevšiml, no to asi neva, já sem si tím linkoval akorát ten CKeditor, protože mi asi přišlo jednodušší upgradovat verzi přepsáním čísla v configu než v šabloně :-)
No aspoň zlehka updatovat ten Readme na úvodu, ta registrace extension, remoteFiles apod. :-)