Table des matières

Problème CORS

Sur https://vps.arn-fai.net/

Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead[Learn More] fquery.min.js:2:21
Source map error: request failed with status 404
Resource URL: https://arn-fai.net/nav/lib/jquery/fquery.min.js
Source Map URL: fQuery-1.10.2.min.map[Learn More]
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://arn-fai.net/nav/nav.json. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).[Learn More]

Lecture : https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin Il semblerait que ça dise de configurer arn-fai.net Et de mettre à jour: Header set Access-Control-Allow-Origin 'origin-list'

Proof of concept

Je teste la ligne Header set Access-Control-Allow-Origin “*” dans /var/www/site-drupal/.htaccess

Résultat: tout le site arn-fai.net est en erreur 500 !

Pourquoi ?

Je change en :

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

Et le site remarche.

Conclusion: le module mod_headers.c manque !

Je rajoute :

root@web:/home/jmlibs# a2enmod headers
root@web:/home/jmlibs# systemctl restart apache2

Et https://vps.arn-fai.net/ fonctionne toujours (sans erreur 500)

et https://vps.arn-fai.net/ a bien le menu qui s'affiche

avec les infos suivantes :

Source map error: request failed with status 404
Resource URL: https://arn-fai.net/nav/lib/jquery/fquery.min.js
Source Map URL: fQuery-1.10.2.min.map[Learn More]
SecurityError: The operation is insecure. nav.js:169

Solution

Maintenant, on va faire une config sérieuse.

Restreindre au site vpn.arn-fai.net

Si je mets Header set Access-Control-Allow-Origin “https://vps.arn-fai.net

C'est bon pour https://vps.arn-fai.net/ mais pas pour http://vps.arn-fai.net/

Alors je teste

<IfModule mod_headers.c>
SetEnvIf Origin "https://vps.arn-fai.net$" AccessControlAllowOrigin=$0
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
#Header set Access-Control-Allow-Origin "https://vps.arn-fai.net"
</IfModule>

Et c'est pareil

<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://vps.arn-fai.net$" AccessControlAllowOrigin=$0
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
#Header set Access-Control-Allow-Origin "https://vps.arn-fai.net"
</IfModule>

C'est bon pour les deux !

Restreindre aux fichiers ressources

<FilesMatch "\.(js|json)$">
  <IfModule mod_headers.c>
    SetEnvIf Origin "http(s)?://vps.arn-fai.net$" AccessControlAllowOrigin=$0
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    #Header set Access-Control-Allow-Origin "https://vps.arn-fai.net"
  </IfModule>
</FilesMatch>

Et c'est bon.

Solution finale

Je mets ça dans /etc/apache2/sites-enabled/arn-fai.net.conf au lieu du .htaccess

apache2ctl restart

Et c'est bon.