Tach,
Ich habe mich durch den trockenen Wust an Informationen mehrfach durchzuquälen(in Kombination mit anderen Seiten die mir Google freundlicher Weise zur Verfügung stellte)
technische Dokumentation sind halt leider keine humorischen Kurzgeschichten.
aber leider gab es nirgendwo ein ordentliches Bsp. diesbezüglich!
http://enable-cors.org/server_apache.html ist auf der erste Treffer in meiner Suchmaschine der Wahl.
Filtern konnte ich dabei, dass eine Änderung innerhalb des Apache-Servers notwendig ist.
Soweit korrekt.
- die Aktivierung des Moduls mod_header.so in der .httpd.conf
Das ist im Allgemeinen nicht mehr die bevorzugte Methode (es kann aber sein, dass der Apache auf deinem RasPi noch eine solche monolithische Konfiguration hat), aber sollte trotzdem funktionieren (sofern der erste Punkt im Dateinamen ein Tippfehler war)
- das hinzufügen des Headers in der httpd.conf:
*Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin"
Header add Access-Control-Allow-Methods "PUT, GET, POST"*
Die Header-Direktive muss meines wissens innerhalb eines der Blöcke <Directory>, <Location>, <Files> oder <VirtualHost> stehen und wenn ein solcher in der httpd.conf vorkommt spricht das für eine monolithische Konfiguration des Apache und hätte andererseits zu einer Fehlermeldung beim Neustart des Apache geführt (du hast es hoffentlich auch in einem zum Request passenden Block gesetzt).
**XMLHttpRequest cannot load http://192.168.2.226/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://TEST.localdomain' is therefore not allowed access. **
Kannst du testweise mal Header set Access-Control-Allow-Origin "*"
ausprobieren (ich habe zumindest Berichte gelsen, dass das angeblich helfen soll, auch wenn ich eigentlich nicht sehe warum) und die zwei weiteren Header (erstmal) weglassen?
Es wird also die Verbindung geöffnet aber keine Daten gesendet. Entsteht das immernoch durch die Rechtevergabe CORS oder ist mein Arduino nicht in der Lage die Daten zu analysieren?
Im Moment findet noch kein vollständiger Request statt, weil der Browser sich aufgrund der SOP immer noch verweigert.
Nachdem ich die Daten gesendet habe, verlange ich eine ResponseText.
var xhr= new XMLHttpRequest(); xhr.open("GET","http://192.168.2.226",false); xhr.send(Daten); alert(xhr.responseText);**
Diesen Meldung erhalte ich. Er ist zwar leer, aber er ist da.
Ich sehe, dass du XMLHttpRequest im synchronen Modus betreibst, was bedeutet, dass der Browser blockiert, bis der Request durch ist; das ist im ersten Moment etwas übersichtlicher (weil man sich nicht mit Asynchonität und Callbacks beschäftigen muss), aber meist nicht das gewünschte Verhalten.
Der Text ist leer, weil der Request nicht durchgeführt wird (s.o.). Welche Requests genau stattfinden, verraten dir übrigens auch die Developer Tools deines Browsers (Ctrl + Shift + i sollte die üblicherweise öffnen)
Ich freue mich über jede Hilfe...ich weiß leider nicht wo ich anpacken muss, oder sind meine Header totaler Müll?
Bisher scheinen die Header gar nicht zu greifen, falls die obige Idee nicht greifen sollte, wäre es hilfreich, wenn du mal deine komplette httpd.conf zeigen könntest und erwähntest welche Linux-Distri auf deinem RasPi läuft.
mfg
Woodfighter