Meilleur auteur de réponses
HttpServerApi ERROR 400 Bad Request. The request Hostname is invalid

Question
-
Bonjour,
Je suis actuellement à développer un WebService. Tout développement est fait en C++, je développe le client à l'aide de WinHttp et le serveur à l'aide de HttpServerApi.
Ayant déjà développé une partie simple de mon client et qui fonctionne correctement avec un serveur IIS, je suis actuellement à développer mon serveur sur une machine à distance:
ulRetCode = HttpInitialize(HttpApiVersion, HTTP_INITIALIZE_SERVER, NULL); if(ulRetCode != NO_ERROR) wprintf(L"HttpInitialize failed with %lu \n", ulRetCode); ulRetCode = HttpCreateHttpHandle(&hReqQueue, 0); if(ulRetCode != NO_ERROR) wprintf(L"HttpInitialize failed with %lu \n", ulRetCode); ulRetCode =HttpAddUrl(hReqQueue, L"http://localhost:1025/", NULL); if(ulRetCode != NO_ERROR) wprintf(L"HttpAddUrl failed with %lu \n", ulRetCode);
Voilà que je lance une requête à partir de mon client ou à partir d'un IE, j'obtiens sans cesse le message d'erreur "HTTP 1.1 400 BAD REQUEST, The request hostname is invalid".
Je suis vraiment bloqué là!!!
J'utilise WireShark pour analyser ce que je recois (côté client) mais rien d'anormale à part le "Request Hosname Invalid":
GET / HTTP/1.1 \r\n Host: IP:Port\r\n User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0\r\n Accept: text/html, appplication....... Accept-Language: ...... Accept-Encoding: gzip, deflate\r\n Connection: keep-alive\r\n \r\n [Full request URI: http://IP@:Port/] [HTTP request 1/1] [Response in frame: 182]
HTTP/1.1 400 Bad Request\r\n Content-Type: text/html; charset=us-ascii\r\n Server: Microsoft-HTTPAPI/2.0\r\n Date: ... Connection: close\r\n .... .... Line-based text data: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">\r\n <HTML><HEAD><TITLE>Bad Request</TITLE>\r\n <META HTTP-EQUIV="Content-Type" Content="Text/html; charset=us-ascii"></HEAD>/r/n <BODY><h2>Bad Request - Invalid Hostname</h2>\r\n <hr><p>HTTP Error 400. The request hostname is invalid.</p>\r\n </BODY></HTML>\r\n
Help me please :)
- Modifié WinHttpOpenRequest, ERROR 404 File Not FOUND jeudi 3 juillet 2014 11:44
Réponses
-
Problème résolu avec une * et non un + :)
- Marqué comme réponse Aurel Bera vendredi 4 juillet 2014 08:21
Toutes les réponses
-
Quel nom d'hôte et numéro de port avez-vous enregistré ?
Si c'est http://localhost:1025
Le Header "Host" de la requête doit être "localhost:1025".
http://msdn.microsoft.com/en-us/library/windows/desktop/aa364698(v=vs.85).aspx
http://www.codeproject.com/Articles/437733/Demystify-http-sys-with-HttpSysManager
Paul Bacelar, Ex - MVP VC++
-
Excusez moi je ne comprend pas votre réponse.
Mon serveur est sur une machine à distance. Je me connecte à son port 1025 pour écouter:
HttpAddUrl(hReqQueue, L"http://localhost:1025", NULL);
D'un autre PC ou d'un IE je ne vais pas appeler un localhost:1025?
WinHttpConnect(hSession,strIPAddress, m_oWebServiceParam.m_iServerPort, 0);
requete HTTP 1.1 GET avec pour hostname: @IP(de la machine à distance):1025
-
Votre HttpAddUrl n'autorise que les connexions local car il n'autorise que les requêtes HTTP ayant comme valeur pour le header Host : "localhost:1025".
Vous devez relire la documentation, cf. le lien déjà posté.
Je pense qu'un "+" à la place de localhost serait bien plus pertinent.
Paul Bacelar, Ex - MVP VC++
-
-
Problème résolu avec une * et non un + :)
- Marqué comme réponse Aurel Bera vendredi 4 juillet 2014 08:21
-