Affichage des articles dont le libellé est ajax. Afficher tous les articles
Affichage des articles dont le libellé est ajax. Afficher tous les articles

1/06/2007

XmlHttpRequest et sécurité

J'essaye d'avoir de jolies équations dans mes posts sur Blogger... J'ai bien essayé jsmath, mais il faut que le script soit héberger sur le même site: c'est donc mission impossible sur Blogger... Au début j'ai pas vraiment compris pourquoi il y avait une telle restriction... J'ai donc essayé d'écrire mon propre script (Ajax) basé sur le compilateur online de Roger . Mais j'ai eu la réponse suivante sous Firefox 2.0:
uncaught exception: Permission denied to call method XMLHttpRequest.open
Pour des raisons de sécurité (connaissez-vous les attaques basées sur le cross scripting?) les XMLHttpRequest ne sont permis que dans le même domaine: si votre script est sur blogger, vous ne pourrez pas récupérer des informations sur votre site googlepages... Imaginez-vous tout ce qui pourrait être fait dans le monde du web 2.0 si une telle restriction était levée... et dans un mêle temps imaginez vous comme il serait facile de vous voler le code pour vous connecter à votre banque grâce à une attaque cross scripting. La sécurité est toujours confronté à ce dilemme: protéger et rendre les applications quasiment inutilisables à cause de leur lourdeur ou bien les rendre extrêmement versatile mais peu sures...

11/13/2006

Ajax - Blogger - ListURL

J'ai plusieurs blogs et mettre à jour tous les templates est vraiment galère. Je cherche actuellement un moyen élégant pour pouvoir modifier toutes mes listes d'url d'un coup avec un seul fichier à modifier... Qui sait, je finirais peut-être par trouver un moyen pour étendre cette méthode à d'autres éléments de la page... Si quelqu'un veut bien m'aider pour régler un petit problème ou 2. J'utilise la technologie Ajax pour récuperer les données dans le fichier listurl.xml, que je veux mettre sur mon compte http://wolverinex02.googlepages.com ... J'ai fini par régler le problème du onload en ajoutant une petite image... En effet l'évenement onload ne peut agir que sur body, les framset et img... Or si je veux pouvoir ajouter facilement ce code à mon blog sur betablogger, j'ai besoin de code portable: il n'est donc pas question de modifier body, donc l'image était la meilleure solution...Je finirais peut_être par la remplacer par une image de 1px... Mais j'aime bien mon Wolverine alors qui vivra verra. Comme vous pouvez le voir j'utilise trois fonction:
  1. getXMLHTTP() : c'est une fonction générique que j'utilises pour tous mes application Ajax: vous pouvez la copier et la garder bien au chaud dans un coin.

  2. getlist() : la fonction que j'appelle dans la page html : c'est dans cette fonction qu'on va rechercher l'information...
  3. displayresponse() : on récupère du XML qu'il faut remettre en forme: c'est justement le but de cette fonction.
Mon problème est que je n'arrive pas à récupérer les données sur http://wolverinex02.googlepages.com


<script>
function getXMLHTTP()
{
var xhr = null;
if(window.XMLHttpRequest)
{ // Firefox et autres
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{ // Internet Explorer
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e1)
{
xhr = null;
}
}
}
else
{
alert("Your browser does not support XMLHTTPRequest objects...");
}

return xhr;
}
function getlist() {

var XHR = getXMLHTTP();
XHR.open("GET","http://wolverinex02.googlepages.com/listurl.xml",true);
XHR.onreadystatechange = function()
{
if (XHR.readyState == 4) {
document.getElementById("list_links").innerHTML=displayresponse(XHR);
}
else {
document.getElementById("list_links").innerHTML="Wait...";
}
}
XHR.send(null);
}
function displayresponse(XHR) {
var docXML=XHR.responseXML;
var root = docXML.getElementsByTagName("listsite")[0];
var items = root.getElementsByTagName("site");
var result="<ul>";
for(i=0;i<items.length;i++) {
var item = items[i];
result+="<li><a href=\""+item.getElementsByTagName('url')[0].firstChild.nodeValue+"\">"+item.getElementsByTagName('title')[0].firstChild.nodeValue+"</a></li>";
}
result+="</ul>";
return result;
}
</script>
<img onLoad="getlist()" src="http://wolverinex02.googlepages.com/movie_x-men_wolverine_2.gif" />
<div id="list_links">
</div>