Mise à jour 3:
J'ai un peu essayé de définir ContentType pour tous les fichiers CSS avec différents types tels que text/plain, text/html et text/css dans le fichier .htaccess du serveur Web hébergeant Owncloud et lors de l'exécution de curl --head http://www.<myDomain>.com/core/css/styles.css?v=abbcfa8606670b201527db15c9717a61
à partir du proxy inverse. serveur, les modifications sont reflétées dans l'en-tête Content-Type.
Cependant, lorsque j'exécute la même commande curl sur le proxy inverse, je ne reçois que le même Content-Type text/html; charset=UTF-8
Mise à jour 2:
J'ai comparé les en-têtes de réponse http lors de l'accès direct à la page et via un proxy inverse, et j'ai constaté que, lorsque vous demandiez directement un fichier css, le type de contenu était text/css, mais que vous utilisiez un proxy inverse, text/html. ; jeu de caractères = UTF-8.
Pourquoi le proxy change-t-il Content-Type et comment puis-je l'empêcher? J'ai essayé de définir DefaultType None
dans Apache2.conf mais cela ne change rien.
Mise à jour:
Dans google chrome, j'obtiens également des variantes du message d'erreur
Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://<my-server-address>/core/css/styles.css?v=f8ed568350f3f0107c10d8e06c55f727".
Si je supprime la ligne de .htaccess
Header set X-Content-Type-Options "nosniff"
Je ne reçois plus le message d'erreur relatif à la vérification de type MIME stricte, mais les mêmes messages "Ressource interprétée en tant que feuille de style" ainsi que des variantes de:
Uncaught SyntaxError: Unexpected token < oc.js?v=f8ed568... :1
Voici mes en-têtes http:
HTTP/1.1 200 OK Date: Fri, 08 Apr 2016 20:04:11 GMT Server: Apache/2.4.7 (Ubuntu) X-Powered-By: PHP/5.5.9-1ubuntu4.14 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src * X-XSS-Protection: 1; mode=block X-Robots-Tag: none X-Frame-Options: SAMEORIGIN X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Content-type: text/html; charset=UTF-8 Set-Cookie: ocirse4el2n4=0aad97s9uv1g5sclishd7sev85; path=/; HttpOnly Set-Cookie: oc_sessionPassphrase=YFrm%2BphkwzrtmgZ%2BJPnv9%2BJXZ4jYMK7TRPuHrgyoJ324CiFcGDm%2FrVITkXEjLDZXYUw%2BGLGrXe1tt8v3YZiHabYyd3Muwfq7BTcY%2FuFzVimQxYGCa682%2FDehZGG0HyRS; path=/; httponly
J'ai deux serveurs Ubuntu 14.04 exécutant Apache 2.4.7, MySQL Ver 15.1 Distrib 10.0.22-MariaDB et PHP 5.5.9.
L’un d’eux est interne, sans accès Internet et utilise un serveur owncloud et l’autre fait face à Internet avec un serveur Apache qui exécute un proxy inverse pour le serveur interne afin de permettre l’accès à owncloud depuis Internet.
Le problème que je rencontre est que, lorsque vous utilisez le proxy inverse, la page Web se charge, mais la plupart du contenu semble échouer et le site Web ne fonctionne pas comme prévu. Si j'ouvre la console, je reçois les variantes des messages d'erreur suivants:
Dans la console Firefox:
The stylesheet <my-server-address>/core/css/jquery.ocdialog.css?v=f8ed568350f3f0107c10d8e06c55f727 was not loaded because its MIME type, "text/html", is not "text/css".
SyntaxError: expected expression, got '<'
Dans la console Google chrome:
Refused to execute script from '<my-server-address>/index.php/core/js/oc.js?v=f8ed568350f3f0107c10d8e06c55f727' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
L'accès à la page Web owncloud en interne fonctionne bien, c'est pourquoi je pense que le problème vient du proxy inverse.
Voici à quoi ça ressemble quand on utilise le proxy inverse:
Et voici à quoi ça ressemble quand on va localement:
Notez également que le bouton sur la première image ne répond pas.
J'ai finalement découvert qu'il me manquait une fin/sur les commandes ProxyPass.
Auparavant j'avais écrit:
ProxyPass / http://cloud.myDomain.com
ProxyPassReverse / http://cloud.myDomain.com
CA devrait etre:
ProxyPass / http://cloud.myDomain.com/
ProxyPassReverse / http://cloud.myDomain.com/
Si votre serveur proxy ou votre conteneur ajoute l'en-tête suivant lors du traitement du fichier .css, certains navigateurs tels que Chrome devront obligatoirement effectuer une vérification stricte des types MIME:
X-Content-Type-Options: nosniff
Supprimez cet en-tête pour empêcher Chrome d'effectuer la vérification MIME.