Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Type mime à partir d'une url ?

6 réponses
Avatar
François Guillet
Bonjour,

Une fonction du genre getMimeType(url), sachant que le javascript est dans
un fichier local du client, que l'url pointe un serveur distant, et que le
type mime cherché est celui que renvoie le serveur, est-elle possible et si
oui comment ?

Merci

6 réponses

Avatar
SAM
Le 24/03/12 15:04, François Guillet a écrit :
Bonjour,

Une fonction du genre getMimeType(url), sachant que le javascript est dans
un fichier local du client, que l'url pointe un serveur distant, et que le
type mime cherché est celui que renvoie le serveur, est-elle possible et si
oui comment ?



Je crains que non
(je ne sais comment fait l'extension pour Fx : Web Developer )

Encore que ... ici peut-être ?
<http://www.ashorlivs.fr/javascript-jquery/article/recuperer-les-headers-html-en>


Pour les types mimes on ne peut connaître que ceux pris en charge par le
navigateur :
navigator.mimeTypes
voir :
<http://fr.selfhtml.org/javascript/objets/mimetypes.htm#type>


--
Stéphane Moriaux avec/with iMac-intel
Avatar
François Guillet
"SAM" a écrit dans le message
de news: 4f6e6426$0$12520$
| Le 24/03/12 15:04, François Guillet a écrit :
| > Bonjour,
| >
| > Une fonction du genre getMimeType(url), sachant que le javascript est
dans
| > un fichier local du client, que l'url pointe un serveur distant, et que
le
| > type mime cherché est celui que renvoie le serveur, est-elle possible et
si
| > oui comment ?
|
| Je crains que non
| (je ne sais comment fait l'extension pour Fx : Web Developer )
|
| Encore que ... ici peut-être ?
|
<http://www.ashorlivs.fr/javascript-jquery/article/recuperer-les-headers-html-en>
|
|
| Pour les types mimes on ne peut connaître que ceux pris en charge par le
| navigateur :
| navigator.mimeTypes
| voir :
| <http://fr.selfhtml.org/javascript/objets/mimetypes.htm#type>

J'ai testé le 1er lien, ça marche mais non.
Si j'appelle depuis mon navigateur (en l'occurence Opera) la page d'un site
puis que je tape dans sa barre d'adresse javascript: + le code indiqué au
1er lien, j'obtiens le bon résultat :

date: mon, 26 mar 2012 12:12:21 gmt
expires: -1
cache-control: private, max-age=0
content-type: text/html; charset=utf-8
content-encoding: gzip
server: gws
content-length: 17632
x-xss-protection: 1; mode=block
x-frame-options: sameorigin

Mais si j'indique pour le XMLHttpRequest() un autre site que celui que j'ai
appelé d'abord par le navigateur, alors j'ai une "security violation".
Je me doutais que j'allais me confronter à des pbs de cross-domains, ça n'a
pas raté :-( !
Je ne comprends pas que la norme interdise des opérations de cross-domaine
aussi élémentaires et sans incidence sur la sécurité.

Merci quand même !
Avatar
SAM
Le 26/03/12 14:23, François Guillet a écrit :
Je ne comprends pas que la norme interdise des opérations de cross-domaine
aussi élémentaires et sans incidence sur la sécurité.




Qui peut le + peut le - ;-)


Je ne sais comment les programmeurs font pour que les logiciels refusent
le cross-domain mais ça ne doit pas être coton d'en plus sérier les cas
qui pourraient être "autorisables" !
D'autant que ... autorisable jusque quand ?
qui garantit qu'un hacker ne va pas profiter de la toute petite brèche ?

--
Stéphane Moriaux avec/with iMac-intel
Avatar
Clément
Le 26/03/2012 14:23, François Guillet a écrit :

J'ai testé le 1er lien, ça marche mais non.
Si j'appelle depuis mon navigateur (en l'occurence Opera) la page d'un site
puis que je tape dans sa barre d'adresse javascript: + le code indiqué au
1er lien, j'obtiens le bon résultat :

date: mon, 26 mar 2012 12:12:21 gmt
expires: -1
cache-control: private, max-age=0
content-type: text/html; charset=utf-8
content-encoding: gzip
server: gws
content-length: 17632
x-xss-protection: 1; mode=block
x-frame-options: sameorigin

Mais si j'indique pour le XMLHttpRequest() un autre site que celui que j'ai
appelé d'abord par le navigateur, alors j'ai une "security violation".
Je me doutais que j'allais me confronter à des pbs de cross-domains, ça n'a
pas raté :-( !
Je ne comprends pas que la norme interdise des opérations de cross-domaine
aussi élémentaires et sans incidence sur la sécurité.

Merci quand même !






Rien n'empêche de passer par un proxy.
Par exemple, depuis votre page, faire un appel ajax vers une page PHP de
*votre* domaine (donc pas de x-domains) avec en paramètre l'url à
contrôler qui lance un curl vers cette url et retourne le mime-type à
javascript. La boucle est bouclée.

Ex de code PHP rapide (il serait meilleur de contrôler l'intégrité de
l'url avant d'envoyer le curl ainsi que d'utiliser json et les contrôles
en cas d'erreur du curl) :

<?php

$ch = curl_init($_POST['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
// on retourne le mime-type
echo curl_getinfo($ch, CURLINFO_CONTENT_TYPE);

$_POST['url'] étant l'url demandée évidemment.
Avatar
François Guillet
"Clément" a écrit dans le message de news:
4f71f01f$0$1682$
| Le 26/03/2012 14:23, François Guillet a écrit :
| >
| > J'ai testé le 1er lien, ça marche mais non.
| > Si j'appelle depuis mon navigateur (en l'occurence Opera) la page d'un
site
| > puis que je tape dans sa barre d'adresse javascript: + le code indiqué
au
| > 1er lien, j'obtiens le bon résultat :
| >
| > date: mon, 26 mar 2012 12:12:21 gmt
| > expires: -1
| > cache-control: private, max-age=0
| > content-type: text/html; charset=utf-8
| > content-encoding: gzip
| > server: gws
| > content-length: 17632
| > x-xss-protection: 1; mode=block
| > x-frame-options: sameorigin
| >
| > Mais si j'indique pour le XMLHttpRequest() un autre site que celui que
j'ai
| > appelé d'abord par le navigateur, alors j'ai une "security violation".
| > Je me doutais que j'allais me confronter à des pbs de cross-domains, ça
n'a
| > pas raté :-( !
| > Je ne comprends pas que la norme interdise des opérations de
cross-domaine
| > aussi élémentaires et sans incidence sur la sécurité.
| >
| > Merci quand même !
| >
| >
| >
|
| Rien n'empêche de passer par un proxy.
| Par exemple, depuis votre page, faire un appel ajax vers une page PHP de
| *votre* domaine (donc pas de x-domains) avec en paramètre l'url à
| contrôler qui lance un curl vers cette url et retourne le mime-type à
| javascript. La boucle est bouclée.
|
| Ex de code PHP rapide (il serait meilleur de contrôler l'intégrité de
| l'url avant d'envoyer le curl ainsi que d'utiliser json et les contrôles
| en cas d'erreur du curl) :
|
| <?php
|
| $ch = curl_init($_POST['url']);
| curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
| curl_exec($ch);
| // on retourne le mime-type
| echo curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
|
| $_POST['url'] étant l'url demandée évidemment.

J'avais vainement essayé il y a deux ans avec une page PHP que j'avais chez
Free : il s'agit de tester des urls de streaming radio, mais Free me bloque
les url avec port différent de 80, ce qui est très souvent le cas des radios
Internet. Mes premières tentatives datent d'il y a 2 ans. Il faudra
peut-être que je réessaye, voir si Free n'a pas changé ses conditions.
J'essaierai avec ton script, merci.
Sinon en VB ça doit être possible mais bon, ça s'intègre mal avec le reste
du projet.
Avatar
François Guillet
"SAM" a écrit dans le message
de news: 4f71d0e2$0$12493$
| Le 26/03/12 14:23, François Guillet a écrit :
| > Je ne comprends pas que la norme interdise des opérations de
cross-domaine
| > aussi élémentaires et sans incidence sur la sécurité.
|
|
| Qui peut le + peut le - ;-)
|
|
| Je ne sais comment les programmeurs font pour que les logiciels refusent
| le cross-domain mais ça ne doit pas être coton d'en plus sérier les cas
| qui pourraient être "autorisables" !
| D'autant que ... autorisable jusque quand ?
| qui garantit qu'un hacker ne va pas profiter de la toute petite brèche ?

En tout cas j'ai déjà tourné le truc dans tous les sens sans rien trouver,
et comme des plus avertis et plus motivés que moi ont dû aussi s'y coltiner
parce qu'on imagine bien la pléthore d'usages supercool qu'on pourrait avoir
en profitant de cette faille, mais qu'on n'a toujours rien sur le web, c'est
qu'ils ont dû échouer.
J'ai cru voir que c'est possible par un système d'accréditation entre sites,
donc il faut avoir la main sur chaque domaine, l'intérêt est limité sauf
pour celui qui a plusieurs domaines à faire tourner de concert.