XMLHTTPREQUEST Post - ContentType: form-data

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

  • XMLHTTPREQUEST Post - ContentType: form-data

    Moin Leutz,

    ich weiß dass bereits ansätze zum versenden eine formulars gibt.
    Ich habe mich nun insperieren lassen von >Martin Honnen:
    Er benutzt diesen Code

    Quellcode

    1. var httpRequest = null;
    2. if (typeof XMLHttpRequest != 'undefined') {
    3. httpRequest = new XMLHttpRequest();
    4. }
    5. else if (typeof ActiveXObject != 'undefined') {
    6. // need try/catch here in reality
    7. httpRequest = new ActiveXObject('Microsoft.XMLHTTP');
    8. }
    9. if (httpRequest != null) {
    10. var boundaryString = 'AaB03x';
    11. var boundary = '--' + boundaryString;
    12. var requestBody = [
    13. boundary,
    14. 'Content-Disposition: form-data; name="GOD"',
    15. '',
    16. 'Kibo',
    17. boundary,
    18. 'Content-Disposition: file; name="prayer"; filename="prayer.txt"',
    19. 'Content-Type: text/plain',
    20. '',
    21. 'Kibology for all.\r\nAll for Kibology.',
    22. boundary
    23. ].join('\r\n');
    24. httpRequest.open('POST', 'test2005093002.php', true);
    25. if (typeof httpRequest.setRequestHeader != 'undefined') {
    26. httpRequest.setRequestHeader('Content-Type',
    27. 'multipart/form-data; boundary=' + boundaryString);
    28. httpRequest.onreadystatechange = function (evt) {
    29. if (httpRequest.readyState == 4) {
    30. alert(httpRequest.status + ' ' + httpRequest.statusText + '\r\n' +
    31. httpRequest.getAllResponseHeaders() + '\r\n\r\n' +
    32. httpRequest.responseText);
    33. }
    34. };
    35. httpRequest.send(requestBody);
    36. }
    37. }
    Alles anzeigen


    um einen Request des ContentType: form-data zu bilden, allerdings wird in Firefox, für den meine Anwendung laufen soll der RequestHeader nciht richtig gebildet.

    Quellcode

    1. REQUEST:
    2. http://localhost/wiki/index.php?title=Hauptseite&action=submit
    3. POST /wiki/index.php?title=Hauptseite&action=submit HTTP/1.1
    4. Host: localhost
    5. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1) Gecko/20061010 Firefox/2.0
    6. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    7. Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    8. Accept-Encoding: gzip,deflate
    9. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    10. Keep-Alive: 300
    11. Connection: keep-alive
    12. Content-Type: multipart/form-data; boundary=--AaB03x
    13. Content-Length: 965
    14. Cookie: wikidb_session=6f835fabb3dfef69ae4a71aa8ab07e1d; wikidbUserID=2; wikidbUserName=Cybo
    15. Pragma: no-cache
    16. Cache-Control: no-cache
    17. --AaB03x
    18. Content-Disposition: form-Data; name="wpSection"
    19. --AaB03x
    20. Content-Disposition: form-Data; name="wpStarttime"
    21. 20061124162705
    22. --AaB03x
    23. Content-Disposition: form-Data; name="wpEdittime"
    24. 20061124150006
    25. --AaB03x
    26. Content-Disposition: form-Data; name="wpScrolltop"
    27. --AaB03x
    28. Content-Disposition: form-Data; name="wpTextbox1"
    29. MediaWiki wurde erfolgreich installiert.
    30. Hilfe zur Benutzung und Konfiguration der Wiki
    31. --AaB03x
    32. Content-Disposition: form-Data; name="wpSummary"
    33. --AaB03x
    34. Content-Disposition: form-Data; name="wpSave"
    35. Seite speichern
    36. --AaB03x
    37. Content-Disposition: form-Data; name="wpDiff"
    38. Änderungen zeigen
    39. --AaB03x
    40. Content-Disposition: form-Data; name="wpEditToken"
    41. 6aaf26964c2d13e2e52fea7b016faad1
    42. --AaB03x
    43. Content-Disposition: form-Data; name="wpAutoSummary"
    44. d41d8cd98f00b204e9800998ecf8427e
    45. --AaB03x
    Alles anzeigen


    Wie unschwer zu erkennen ist, befindet sich im Postbody des ContentTypes der Cookie, Pragma und Cache.
    1. Setze ich das gar nciht
    und 2. wenn es automatisch geschieht, warum wird es in den ContentType reingeschoben?

    Wie kann ich das verhindern?
  • Hi,
    Ich nehme an du beziehst dich auf diesen Thread und die Antwort von Martin Honnen http://www.thescripts.com/forum/thread165254.html

    Der Header ist immer jener der Zieldatei:
    Im Beispiel: test2005093002.php
    In deinem Code: http://localhost/wiki/index.php?title=Hauptseite&action=submit

    Wenn die Zieldatei session-/cookiefrei ist, dann werden die beanstandeten Header (cookie,cache,..) auch nicht übertragen.
    Da die Wiki Seite aber nicht cookiefrei ist, werden diese nunmal übertragen.

    Hast du den Code mal auf einer cookiefreien Zielseite versucht?
  • hm wo genau ich das jetzt herhabe weiß ich leider nciht mehr, hatte nur versucht ihn zu kontaktieren.
    Wiki ist leider nicht cookiefrei, der muss mitgesendet werden. Um missbrauch zu vermeiden. Ich habe ja auch nichts dagegen, wenn dieser nur vor dem Contenttype gesetzt wird. Weil er gehört nicht an diese Stelle rein :(
    oder ist es egal weil die Daten von boundary markiert werden. Denn lauft Fehlermeldung des Logs von MediaWiki kommen gar keine variablen an ....

    Und im request des Formulars stehen Cookie vor Contenttyp.