HEAD Request liefert daten zurück

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

  • HEAD Request liefert daten zurück

    Hi,

    ich möchte einen Request machen der mir nur den HEAD Teil zurückliefert damit ich selbst entscheiden kann ob ich die Daten lade oder nicht ... wenn ich einen NSMuzableURLRequest erstelle und dessen HTTPMethod auf "HEAD" setze bekomme ich trozdem Daten zurück... muss ich da noch was beachten`?

    Quellcode

    1. NSMutableURLRequest *headerRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
    2. [headerRequest setHTTPMethod:@"HEAD"];
    3. NSURLSessionTask *headerTask = [session dataTaskWithRequest:headerRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
    4. {
    5. NSLog(@"data hat hier die kompletten Daten :-/");
    6. }];
    7. [headerTask resume];
  • Hast du mal nachgesehen, ob der Body tatsächlich bei dem Request übers Netz geht? Vielleicht kommt der auch aus irgend einem lokalen Cache. Falls doch: Nach Spec darf ein Webserver auf ein HEAD keinen Body zurückgeben (MUST NOT), also sollte das alles so sein wie du es dir vorstellst. Aber letztendlich kann man sich halt nicht darauf verlassen, dass sich Server daran halten. Mögliche Workarounds: Vielleicht lässt sich der Server durch einen Range-Header dazu überreden, nicht alles zurückzugeben (andererseits wäre das bei einem HEAD-Request ziemlich unsinnig). Oder: Nach vollständigem Response Header den Task abbrechen.
    Multigrad - 360°-Produktfotografie für den Mac
  • Ich vermute eine unsaubere HEAD-Implementierung. Mit was wurde der Server implementiert? PHP?

    raegtime schrieb:

    ich möchte einen Request machen der mir nur den HEAD Teil zurückliefert damit ich selbst entscheiden kann ob ich die Daten lade oder nicht
    Das kannst du mit ETag-Anfragen wesentlich sauberer und HTTP-konform umsetzen.


    mattik schrieb:

    Vielleicht lässt sich der Server durch einen Range-Header dazu überreden
    Matthias! Sowas von Dir! Ich bin entsetzt! ;) :D
    „Meine Komplikation hatte eine Komplikation.“
  • Der Server liefert aber kein etag :) ... und ist nicht PHP basierend... Ich habe mal die App gelöscht und dann nochmal NUR den Header Aufruf gemacht. Dann hat es geklappt ... wenn er aber anschließend irgendwann mal den normalen GET Aufruf macht und ... später wieder nur den HEAD dann ist dieser wieder voll (das data Objekt) ... scheinbar holt der das ausm Cache oder so?! ...