web-dev-qa-db-fra.com

Apache2 "Le nom de l'en-tête de la réponse '<! -' contient des caractères non valides et annule la requête"

Modifier

Le problème n'avait rien à voir avec l'en-tête http. C'était une variable appelée dans le script cgi/python avant sa définition. Juste au cas où d’autres essaient aussi de travailler avec un message d’erreur de ce type mais ne trouvent pas la raison.


J'ai hérité d'un site Web basé sur les scripts Apache2/python/cgi que j'essaie de maintenir, mais parfois, je rencontre 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

Sur la base d'une question similaire, je suppose que l'erreur est nouvelle, mais je ne trouve pas 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 sache, la première ligne constitue le seul en-tête HTTP que j'ai. 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 existe un moyen simple de transformer ces erreurs génériques en erreurs plus verbeuses, je serais également très intéressé par cela.

5
Lilith-Elina

Dans mon cas, le problème était la façon dont l'alignement de la sortie de l'instruction 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
eorochena

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

0
dogacan