HTTP/1.1 HEAD Request Method vom System ignoriert…

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • HTTP/1.1 HEAD Request Method vom System ignoriert…

    Moin,

    ein kleiner Erlebnisbericht.
    Ich triggere eine lokale URL mit curl -k -X HEAD -I https://localhost, beim Server kommt aber einen GET Request an.
    Nein, ich bastle an keinem eigenen Server…
    HTTP/1.1 200 OK
    Date: Sat, 12 Sep 2015 22:43:25 GMT
    Server: Apache
    MS-Author-Via: DAV
    Content-Type: text/html
    Server version: Apache/2.4.16 (Unix)
    Server built: Jul 22 2015 21:03:09

    Ja, ich vertraue localhost blind. :D

    Aufgefallen ist mir das, weil folgender Test fehl schlug:

    C-Quellcode

    1. //…
    2. NSMutableURLRequest * headRequest = [NSMutableURLRequest requestWithURL:[self serverBaseURL]];
    3. [headRequest setHTTPMethod: @"HEAD"];
    4. XCTAssertEqualObjects( @"HEAD", [headRequest HTTPMethod], @"Setting HTTP Method failed");
    5. // @"HEAD" is not equal to @"GET"…


    Sowohl NSURLRequest als auch cURL machen irgendwie aus einem HEAD Request automatisch einen GET Request.
    BAZINGA, HURZ und QWERTY Requests werden 1:1 weiter geleitet, aber aus HEAD wird GET. 8|

    In Verbindung mit RFC 2616 Abschnitt 9.4 lässt sich daraus sogar eine Logik ableiten: Linküberprüfungen von unserem System aus? Nooooin! Wozu DAS denn? :D
    Interessant finde ich diese Autokorrektur aber dennoch.

    Hat jemand Erfahrung damit, ob das $andereBetriebssysteme auch so machen?
    Was könnte der Grund dafür sein?

    (FunFact: Sogar Apples eigener Python3 HTTP Server ist lokal nicht testbar, da das extra implementierte HEAD Handling dem System sei Dank gar nicht erst aufgerufen werden kann.)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Marco Feltmann ()

  • kann ich nicht reproduzieren (OS X 10.10.5 Server):


    curl -k -X HEAD -I localhost

    HTTP/1.1 403 Forbidden
    Date: Sun, 13 Sep 2015 06:11:30 GMT
    Server: Apache
    Content-Location: websitesoff403.html.en
    Vary: negotiate,accept-language
    TCN: choice
    Last-Modified: Mon, 03 Aug 2015 01:57:18 GMT
    ETag: "631-51c5e7d491b80;51dd120ba3d80"
    Accept-Ranges: bytes
    Content-Length: 1585
    MS-Author-Via: DAV
    Cache-Control: no-cache
    Content-Type: text/html
    Content-Language: en

    und ebenfalls nicht bei einer uralt xampp-installation:



    HTTP/1.1 200 OK
    Date: Sun, 13 Sep 2015 06:12:53 GMT
    Server: Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1
    Last-Modified: Fri, 16 Jan 2009 12:51:47 GMT
    ETag: "105477-1a2-46099092c3ec0"
    Accept-Ranges: bytes
    Content-Length: 418
    Content-Type: text/html
  • macmoonshine schrieb:

    Wie stellst du denn fest, was beim Server ankommt?

    Python-Quellcode

    1. import time
    2. def application(environ, start_response):
    3. output_file = file('/Library/Server/Web/Data/WebApps/log.txt', 'a')
    4. output_file.write(str(time.time()))
    5. output_file.write("\t")
    6. output_file.write(environ['REQUEST_METHOD'])
    7. output_file.write("\n")
    8. output_file.close()
    9. response_headers = [('Content-type', 'text/html'),
    10. ('Content-Length', '0')]
    11. start_response('200 OK', response_headers)
    12. return ['']
    Alles anzeigen

    Für die Nutzung von Wireshark bin ich offenbar nicht qualifiziert. ;)
    (Klar, mitlesen bei SSL ist nicht so einfach…)

    Wird offenbar doch ein HEAD gesendet, gut gut.
    In PHP bekomme ich auch die richtige Request Method zurück.
    Böse Schlange, böse.

    Danke soweit! :)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Marco Feltmann ()

  • Nein.

    Da die PHP Integration eh einfacher ist als über dieses komische WebApps.plist Gestrüpp zu gehen, hab ich da auch kein gehobenes Interesse dran.
    (Da die Server App das irgendwie automatisch auf HTTPS:// münzen will, bekomme ich eh immer nur ein 302 zurück statt dass das Script aufgerufen wird.)
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P