2017-07-28 5 views
2

ModifierApache2 « nom d'en-tête de réponse « <- » contient des caractères non valides, demande l'interruption »

Le problème n'a rien à voir avec l'en-tête http. C'était une variable appelée dans le script cgi/python avant qu'elle ne soit définie. Juste au cas où d'autres essaient aussi de travailler avec un message d'erreur comme celui-ci mais ne peuvent pas trouver la raison pour cela.


J'ai hérité d'un site Web basé sur des scripts apache2/python/cgi que je suis en train de maintenir, mais parfois je me bats avec des erreurs vraiment inutiles. Dans ce cas, je reçois The server encountered an internal error or misconfiguration and was unable to complete your request. lorsque je clique sur un élément d'une page. Le journal des erreurs me donne les informations suivantes:
[Fri Jul 28 14:11:15.150877 2017] [http:error] [pid 1727] [client 193.174.111.250:53426] AH02429: Response header name '<!--' contains invalid characters, aborting request

Basé sur une question similaire, je suppose que l'erreur est tout à fait nouveau, mais je ne peux pas trouver le problème. Surtout que le lien/le nom du script reste le même. Cela fonctionne lors de la première ouverture du site, mais cesse de fonctionner lorsque je clique sur quelque chose qui ne me renvoie pas à un autre site/script. Comment cela peut-il être la faute de l'en-tête?

Juste au cas où, voici le code qui génère le début de la page Web:

Code = "Content-Type: text/html\n\n" 
Code += "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>\n<html>\n"  
Code += "<head>\n <title>BACTOME: RELATIVE EXPRESSIONS</title>\n" 
... 

Pour autant que je comprends maintenant, la première ligne constitue la seule tête HTTP je. Il n'y a pas '<!--' comme indiqué dans le journal des erreurs. L'en-tête a-t-il besoin d'autre chose pour être fonctionnel?

PS: Sinon, s'il y a un moyen facile de transformer ces erreurs génériques dans les plus verbeux, je serais également très intéressé par cela.

+0

Vous semble confondre ** en-têtes HTTP ** et ** balise '' HTML de **. Donc, deux solutions: 1. le code que vous avez collé est _really_ comment vous générez des en-têtes http. Si oui, ce n'est vraiment pas ce à quoi devraient ressembler les en-têtes http. 2. Ce n'est pas comme ça que vous générez des entêtes http, mais html et que l'erreur se produit ailleurs. – Arount

+0

Vous avez raison, bien sûr, c'est l'en-tête HTML et non HTTP. Je ne l'ai pas trouvé de code pour que, donc je ne savais pas que je regardais la mauvaise chose ... –

+0

Si vous êtes sûr que votre question n'est pas un question_ de _Procession (aka pas quelque chose qui va aide efficacement d'autres), il serait juste de le supprimer. – Arount

Répondre

0

Dans mon cas, le problème est la façon dont le Aligement de la sortie de la déclaration d'impression

Avant:

try: 
    if <some-condition> 
     message = "%s" % filename 
    else: 
     message = "file not found" 
    print """\n 
     Content-Type: text/html\n 
     <html><body> 
     <p>%s</p> 
     </body></html> 
     """ % (message,) 
except Exception as e: 
    print e 

Après:

try: 
    if <some-condition>: 
     message = "%s" % filename 
    else: 
     message = "file not found" 
    print """\ 
Content-Type: text/html\n 
<html><body> 
<p>%s</p> 
</body></html> 
""" % (message,) 
except Exception as e: 
    print e 
+0

le début ... C'est intéressant dans tous les scripts qui génèrent ce site web Je suis actuellement en vacances mais je vais certainement y jeter un coup d'œil quand je serai de retour au bureau Merci de partager votre avis! -) –

+0

Ce n'est définitivement pas le problème Ajouter un retour à la ligne AVANT que le type de contenu ne produise que le code en cours d'impression au lieu du site Web affiché –

+0

vous avez raison le problème est l'alignement du texte html dans votre instruction print, check my edit answer – eorochena

0

Pour la même erreur, dans un cas d'impression similaire, il était dû à la collation de la base de données; le changer en UTF-8 m'a aidé.