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 | 211
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 | 208
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 | 208
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 | 167
@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 | 208
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 | 167
@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. :-)
- d@rkWolf
- Člen | 167
@Gappa čau, prosímtě, dá se nějak obejít neustále rekompilování scss když se nic nezměnilo? nějaká kontrola změněných souborů nebo tak něco? když to mám na localhostu v dev módu a mám tam hodně scss kódu, je každé obnovení stránky strašně pomalé (tracy měří třeba 9–10 000 ms na reload).
- d@rkWolf
- Člen | 167
@Gappa no tam je nějaké watch files, ale já to nikdy nepoužil, už nevím proč, mám dojem, že sem někde viděl někoho psát, že to hrozně zpomaluje – toto – nevím, proč je tam jednou from a podruhé in:
watchFiles: # only watch modify file
- {files: [„.css“, „.less“], from: css}
- {files: [„.css“, „.less“], in: css}
Jak je myšleno tohle v 5.0.0 release?
Removed: joinFiles, they are always joined. This can be substituted by adding batches as needed.
Samostatné JS soubory na dev mi přijdou lepší, lépe se v tom hledají chyby. U SCSS to samozřejmě bez spojení nejde, to je jasný.
Taky jsem dřív používal LESS, ale potom, co od něj po 3.verzi odešel Bootstrap sem přešel na SCSS.