IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

erreur page javascript sur serveur


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut erreur page javascript sur serveur
    Bonjour a tous,

    J'espère poster mon problème au bon endroit.

    Voila, j'ai développé une appli web qui commande une caméra IP a distance.

    J'ai deux pages une page .html et une autre .js

    En local tout fonctionnait parfaitemenent bien.

    J'ai installé mes 2 pages sur un serveur.
    J'ai bien modifié tous mes liens dans mon code mais des erreurs se produisent lorsque j'envoie des information a ma caméra

    Pour pivoter a droite la page envoie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var xhr=null;
    xhr = new XMLHttpRequest();
    xhr.open("POST", "HTTP://86.8.12.64/axis-cgi/com/ptz.cgi");
    xhr.send("/camera=1&move=right")
    L'erreur indiquée est :
    erreur : accès refusé
    code : 0

    Pourriez vous me dire si vous avez une idée du problème?

    Est ce un pb de configuration du serveur ?

    Merci de vos aides

    Bien cordialement

  2. #2
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!

    Quand tu utilises HttpRequest, la ressource cible doit être accessible via HTTP, donc si elle est au-dessus de la racine du site, l'accès est refusé. En général, le problème vient de là.

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    J'ai pas tout compris a ta réponse.

    Désolé


    Et pourquoi cela fonctionnerai en local?
    ( la page html est en local, la caméra est accessible avec xmlhttprequest )

    Merci de ta patiente

    Bien cordialement7

  4. #4
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!


    S'cuze moi, j'étais un peu naze hier soir et j'avais mal compris ta question. Je me suis braqué sur le mot "accès", mais en fait, ce serait plutôt un problème de permission: XMLHttpRequest ne peut pas appeler une page sur un autre serveur.
    La page appelante et la page appelée doivent donc être sur le même serveur.

  5. #5
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var xhr=null;
    xhr = new XMLHttpRequest();
    xhr.open("POST", "./ptz.cgi");
    xhr.send("camera=1&move=right")
    seul les liens relatifs marchent pour un XMLHttpRequest...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    ajax ne permet de requeter que au sein du même domaine

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    Merci pour ces infos tres utiles.

    Comment puis-je faire pour piloter ma caméra sans le xmlhttprequest ?

    Vu que mes caméra ip ne sont pas sur le meme domaine.

    Bien cordialement

  8. #8
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    ton serveur doit faire le boublot à la place du client
    iframe/frame et autre astuce!

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    J'essaie d'utiliser un iframe mais je ne vois pas comment je pourrai l'utiliser pour que cela me serve.

    Merci pour votre patiente

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    voila mon code, cela vous permettra surement de mieux comprendre mon pb


    Pour la visualisation de la webcam sur ma page html :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
     
     
    <head>
     
    <title>WebCam</title>
     
    </head>
    <body onload="loaded()" onkeypress="keyStroke()" topmargin="0" leftmargin="0">	
     
     
    <script src=scroll_zoom.js></script>
     
     
    <SCRIPT LANGUAGE="JavaScript">
    // Set the BaseURL to the URL of your camera
    var BaseURL = "http://xx.xx.xx.xx/";
     
    // DisplayWidth & DisplayHeight specifies the displayed width & height of the image.
    // You may change these numbers, the effect will be a stretched or a shrunk image
    var DisplayWidth = "176";
    var DisplayHeight = "144";
     
    // This is the path to the image generating file inside the camera itself
    var File = "axis-cgi/mjpg/video.cgi?resolution=QCIF&clock=1&date=1&text=0";
    // No changes required below this point
    var output = "";
    if ((navigator.appName == "Microsoft Internet Explorer") &&
       (navigator.platform != "MacPPC") && (navigator.platform != "Mac68k"))
    {
      // If Internet Explorer under Windows then use ActiveX 
      output  = '<OBJECT ID="Player" width='
      output += DisplayWidth;
      output += ' height=';
      output += DisplayHeight;
      output += ' CLASSID="CLSID:DE625294-70E6-45ED-B895-CFFA13AEB044" ';
      output += 'CODEBASE="';
      output += BaseURL;
      output += 'activex/AMC.cab#version=4,1,5,1">';
      output += '<PARAM NAME="MediaURL" VALUE="';
      output += BaseURL;
      output += File + '">';
      output += '<param name="MediaType" value="mjpeg-unicast">';
      output += '<param name="ShowStatusBar" value="0">';
      output += '<param name="ShowToolbar" value="0">';
      output += '<param name="AutoStart" value="1">';
      output += '<param name="StretchToFit" value="1">';
      // Remove the // for the ptz settings below to use the code for click-in-image. 
         //  output += '<param name="PTZControlURL" value="';
         //  output += BaseURL;
         //  output += '/axis-cgi/com/ptz.cgi?camera=1">';
         //  output += '<param name="UIMode" value="ptz-relative">'; // or "ptz-absolute"
      output += '<BR><B>Axis Media Control</B><BR>';
      output += 'The AXIS Media Control, which enables you ';
      output += 'to view live image streams in Microsoft Internet';
      output += ' Explorer, could not be registered on your computer.';
      output += '<BR></OBJECT>';
    } else {
      // If not IE for Windows use the browser itself to display
      theDate = new Date();
      output  = '<IMG SRC="';
      output += BaseURL;
      output += File;
      output += '&dummy=' + theDate.getTime().toString(10);
      output += '" HEIGHT="';
      output += DisplayHeight;
      output += '" WIDTH="';
      output += DisplayWidth;
      output += '" ALT="Camera Image">';
    }
    document.write(output);
    document.Player.ToolbarConfiguration = "play,+snapshot,+fullscreen"
     
     
    </SCRIPT>
    ....


    et voila la page scroll_zoom.js
    Cette page permet de controler la caméra (zoom avant , arriere, pivot gauche, droite, haut et bas a l'aide des touches respectives 7,3,4,6,2,8)

    C'est cette partie la qui ne fonctionne pas avec le XMLHttpRequest

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
     
     
    	// attend the keystrokes to zoom or move the image
    	function keyStroke() {
    	switch(event.keyCode) {
     
    	// resizing commands
     
    	case 55: // touche 7 = zoom+
     
    	var xhr=null;
    	xhr = new XMLHttpRequest();
    	xhr.open("POST", "HTTP://xx.xx.xx.xx/axis-cgi/com/ptz.cgi");
    	xhr.send("/camera=1&rzoom=2500")
    	break
     
     
     
    	case 51: // touche 3 = zoom-	
     
    	var xhr=null;
    	xhr = new XMLHttpRequest();
    	xhr.open("POST", "HTTP://xx.xx.xx.xx/axis-cgi/com/ptz.cgi");
    	xhr.send("/camera=1&rzoom=-2500")
    	break						
     
     
     
    	// scrolling commands
     
    	case 56: // touche 8 = bas
    	var xhr=null;
    	xhr = new XMLHttpRequest();
    	xhr.open("POST", "HTTP://xx.xx.xx.xx/axis-cgi/com/ptz.cgi");
    	xhr.send("/camera=1&move=down")
    	break
     
    	case 50: // touche 2 = haut
    	var xhr=null;
                 xhr = new XMLHttpRequest();
                 xhr.open("POST", "HTTP://xx.xx.xx.xx/axis-cgi/com/ptz.cgi");
                 xhr.send("/camera=1&move=up")
    	break
     
     
     
    	case 54:  // touche 6 = droite				
                 var xhr=null;
                 xhr = new XMLHttpRequest();
                 xhr.open("POST", "HTTP://xx.xx.xx.xx/axis-cgi/com/ptz.cgi");
                 xhr.send("/camera=1&move=right")		
    	break
     
     
    	case 52:  // touche 4 = gauche			
    	var xhr=null;
                 xhr = new XMLHttpRequest();
                 xhr.open("POST", "HTTP://xx.xx.xx.xx/axis-cgi/com/ptz.cgi");
                 xhr.send("/camera=1&move=left")
    	break
     
     
    	default:
    	break

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    mets un iframe caché dans ta page avec un form et fais un submit de ce form ...

    => les données sont envoyées à la page php sans rechargement de la page mère

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    De ce style la ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <body>
    <IFRAME src="http://xx.xx.xx.xx/view/index.shtml"> 
     
    <FORM METHOD="POST"  ACTION="HTTP://xx.xx.xx.xx/axis-cgi/com/ptz.cgi/camera=1&move=left" >
     
    <INPUT type="submit" value="pivoter à gauche">
    </FORM>
    </IFRAME>
     
    </body>

    Cependant le chargement est long et en plus ca n'a pas l'air de fonctionner.... je desespere.

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Non !

    le src de ton iframe doit etre une page la page php de traitement de l'action

    et dans cette page tu dois avoir un form avec pour action la même page ...

    dans le form un input text dasn lequel tu mettra dynamiquement la chaine d'instructions avant de l'envoyer ...

    le formulaire soumis envoie les instructions à la camera et recharge la page dasn l'iframe ..

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    Et comme ceci?


    Voila ma page principal Index.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <body>
     
    <IFRAME src="toto.php" > </IFRAME>
     
    </body>
    Voila ma page PHP : toto.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <body>
     
    <FORM METHOD="POST"  ACTION="http://xx.xx.xx.xx/view/index.shtml" >
    <input type="text" value="HTTP://xx.xx.xx.xx/axis-cgi/com/ptz.cgi/camera=1&move=left">
    <INPUT type="submit" value="pivoter à gauche">
     
    </FORM>
    </body>
    Merci vraiment pour ton aide
    Je suis conscient d'être un boulet mais je m'en sort pas ....

  15. #15
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Meuh non t'es pas un ...

    Bon, ton appel à la méthode open de XMLHttpRequest ne peut se faire que depuis la machine où se trouve le cgi qui commande la caméra.

    L'astuce est donc d'envoyer les données à une page qui se trouve sur cette machine, et c'est cette page qui va faire l'appel à la méthode open de XMLHttpRequest, ce qui devrait régler ton problème de cross-domain.

    Pour éviter de recharger la page où sont saisies les commandes envoyées à la caméra, on va utiliser une iframe qui sera la cible (target) du formulaire qui enverra les commandes.

    Schématiquement, la page qui enverra les commandes (simplifiée à l'extrême, à toi de la rebatir)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html>
    <body>
    <form action='HTTP://86.8.12.64/passerelle.php' method=post target="mon_iframe">
    <input type=text name="action" value="/camera=1&move=right">
    <input type=submit>
    </form>
    <iframe name="mon_iframe">
    </iframe>
    </body>
    </html>
    La page passerelle.php qui récupère les commandes envoyées par la page ici au-dessus et les transmet au cgi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <html>
    <body>
    <script>
    var xhr=null;
    xhr = new XMLHttpRequest();
    xhr.open("POST", "/axis-cgi/com/ptz.cgi");
    xhr.send("<?php echo $_POST["action"]; ?>")
    </script>
    </body>
    </html>
    Voilà, c'est l'idée générale, faudra peut-être adapter un chouïa pour que ça fonctionne (les chemins d'accès, tout ça..)

  16. #16
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    Merci pour tout explication je vais essayer je te tiens au courant


  17. #17
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    Bonjour,

    Malheureusement je n'ai aucun accès au domaine de la caméra ip en question.
    Donc je ne peux mettre aucun fichier sur le meme domaine qu'elle.

    Aurais tu une solution miracle?

    Je desespere

  18. #18
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!

    Ce problème du cross-domain doit pouvoir être résolu en changeant la sécurité du browser.

    Va voir cette discussion, elle est très intéressante:
    http://www.developpez.net/forums/d25...mlhttprequest/

  19. #19
    Membre du Club
    Inscrit en
    Juillet 2008
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 74
    Points : 44
    Points
    44
    Par défaut re
    Merci pour ce lien mais les avis sont partagés a ce sujet.

    Tu pense que le fais de créer un lien direct entre le serveur sur lequel sont mes pages web et le serveur ou se trouve la caméra est une solution pour le XMLHTTPRequest et le pb de cross-domain ?

    En gros lorsque que je vais tapper

    http://IPServeurWeb/camera.html

    Ca va etre

    http://IPServeurCaméra/caméra.html

  20. #20
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!

    Il n'y a pas de problème pour envoyer des données de serveur à serveur, je le fais en ASP avec l'objet Msxml2.ServerXMLHTTP.3.0. Faudrait voir comment faire cela en PHP.

    Tu pourrais ainsi envoyer tes commandes sur le premier serveur avec un bête formulaire, ce serveur récupère les données dans la collection POST et les expédie à son tour vers la caméra.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/04/2012, 18h19
  2. Comment insérer page web sur serveur IIS
    Par Neyte dans le forum ASP.NET
    Réponses: 8
    Dernier message: 11/08/2010, 15h52
  3. Erreur déploiement application sur serveur IIS
    Par Dragna_x dans le forum Silverlight
    Réponses: 4
    Dernier message: 06/05/2010, 09h16
  4. Erreur 401.2 sur serveur IIS 6.0
    Par Arthis dans le forum IIS
    Réponses: 0
    Dernier message: 27/07/2007, 10h20
  5. Pages ASP sur serveur Linux
    Par loloviolo dans le forum Apache
    Réponses: 1
    Dernier message: 15/12/2005, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo