Bonjour les gens.
J'avais mis en place sur un sous domaine des ressources à mettre en commun entre mes sites (bootstrap, jquery, fontawesome, ect), avec un .htaccess relativement costaud.
Ca a marché nickel pendant… 12heures?
Puis après 12 heures, sans aucune modification de ma part sur le site (codé de 0, pas un wordpress ou autre usine a gaz qui fait des trucs toute seule), d'un seul coup toute requête GET des pages web demandant des ressources retournaient un "No 'Access-Control-Allow-Origin' header is present on the requested resource.".
A noter que j'utilise SRI ect, donc le fait que CORS arrête de fonctionner aléatoirement est "légèrement" problématique.
Plus d'une heure de trifouillage du .htaccess, y compris supprimer et remettre le fichier, RIEN ne marche.
La "solution" temporaire que j'ai trouvée, DEPLACER la totalité des resources dans un sous dossier, rajouter ce sous dossier dans les liens des ressources sur le site ;
merci PHP de m'éviter trop de travail manuel, je me suis simplifié la vie avec :
`https://subdo.domaine.net/jq/jq.3.6.0.min.js`
Et d'un seul coup, miracle?!? , ça marche niquel, CORS et SRI sans aucun accroc!
Autrement dit, le problème ne semble être ni la configuration de mon .htaccess coté site ni coté ressource.
Pour info, ci dessous les deux htaccess QUASI complets (je cache quelques redirections et astuces coté site)
.htaccess coté site:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.(.)$ [NC]
RewriteRule ^(.)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L,E=HTTPS:1]
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Header set Cache-Control "max-age=31536000, public"
Header set Cache-Control "max-age=31536000, private"
Header set Cache-Control "max-age=7200, public"
Header unset Cache-Control
RewriteRule /?.403$ - [F,L]
ErrorDocument 403 /err/403.php
ErrorDocument 404 /err/404.php
Options All -Indexes
order allow,deny
deny from all
Header set Referrer-Policy "same-origin"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set Content-Security-Policy "default-src 'none' ; //15 kilomètres de CSP"
.htaccess coté ressources:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.(.)$ [NC]
RewriteRule ^(.)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L,E=HTTPS:1]
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Header set Cache-Control "max-age=31536000, public"
Header set Cache-Control "max-age=31536000, private"
Header set Cache-Control "max-age=7200, public"
Header unset Cache-Control
Options All -Indexes
order allow,deny
deny from all
SetEnvIfNoCase Origin "https?://(subdo.domaine.net|subdo.domaine.net|domaine.net)(:\d+)?$" ACAO=$0
Header set Access-Control-Allow-Origin %{ACAO}e env=ACAO
Header set Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS"
Header set Referrer-Policy "same-origin"
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set X-Frame-Options "SAMEORIGIN"
Header set Content-Security-Policy "default-src 'none' ; frame-src 'self'; manifest-src 'self'; connect-src 'self'; script-src-elem 'self' 'sha384-lAI5qrIiXYOHShnhQ7a7i4lS/JUz1YclJQjneTY/6Wi4J0HLtMMmdqepkOQDMxcL' ; style-src 'self' ; style-src-elem 'self'; font-src 'self' ; img-src 'self'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; script-src 'self' ;"
Les questions maintenant sont:
$array = array(
"foirageperso" => "si j'ai foiré, ou ça et pourquoi ça marchait et départ et pas après",
"foirageOVH" => "si OVH foire, comment leur faire bouger le fessier, ou comment contourner leurs foirages pour ne plus avoir a déplacer toutes mes ressources partagées quand ça arrive.",
);