2016-10-21 2 views
1

J'ai un compilé c binaire (Setch) qui prend les paramètres HIGH/LOW/OFF donc je suis en train d'exécuter la commande par exemple setch OFF de javascript/jquery ainsi:Est-il possible de passer un caractère d'espace à un CGI?

$.get("cgi-bin/setch.cgi","OFF"); -or 
$.get("cgi-bin/setch OFF"); 

Comme il est un obtenir alors l'espace est codé en% 20, bien sûr. Cependant, le serveur tente alors d'exécuter la commande setch%20OFF et retourne:

404 Not Found

Sans le paramètre le programme exécute et retourne mon message:

aucun paramètre

c.-à-d. Tous les chemins, autorisations, etc sont OK

Est-ce que j'essaie de faire l'impossible ici? Ou ai-je manqué quelque chose dans la configuration du serveur (lighttpd)? Merci

Répondre

0

Vous souhaitez transmettre un paramètre à un CGI. La façon de le faire n'est pas de les séparer avec un espace, mais plutôt de mettre le paramètre derrière un "?" personnage. Le serveur HTTP stockera ensuite tout ce qui suit derrière le point d'interrogation dans la variable d'environnement QUERY_STRING que votre CGI peut ensuite lire.

I.e.

$.get("cgi-bin/setch?OFF"); 

Dans votre programme C utiliser getenv("QUERY_STRING") pour accéder au paramètre passé.

Vérifiez https://en.wikipedia.org/wiki/Common_Gateway_Interface pour obtenir la liste de toutes les variables d'environnement que le serveur HTTP a définies pour les programmes CGI. Veillez à traiter les valeurs comme des données non fiables.

+0

Merci beaucoup. Le bit crucial que j'avais été incapable de trouver était l'utilisation de variables d'environnement. Tout va bien maintenant ... –