bei einem Projekt nutze ich die Loxone json API, siehe hier.
D.h. mit einer basic authentication greife ich vom Miniserver Daten ab, e.g. in der erstellten index.html im JavaScript-Teil via:
headers: {
'Authorization': 'Basic ' + authString}
})
Das klappt soweit, jedoch nur wenn ich nach je 6 requests einen Timeout einbaue (e.g. "setTimeout(Function mit je 6 fetchData()-Aufrufen, 5000);") und 5 - 40 sek warte bis zur nächsten "Anfragen-Runde".
Tue ich das nicht, so kommt eine Reihe von Fehlermeldungen in der JavaScript Console des Safari Browsers:
Das Verhalten spiegelt sich auf einem iPad / iPhone. Beim Mac kann ich das mit dem Firefox-Browser umgehen, hab dann aber andere Probleme. Gern möchte ich das was ich tue nativ im Safari machen.
Das ganze scheint mit den Browser-eigenen CORS (cross-origin ressource sharing) Einstellungen zu tun zu haben, siehe hier. D.h., der Loxone Miniserver scheint CORS-Einstellungen gesetzt zu haben, die von Safari so ausgelegt werden, dass nur eine begrenzte Zahl von Abrufen erlaubt wird? So ganz verstehe ich das eigentlich nicht, da ich diese CORS Beschränkungen nur als Digital (Ja/Nein), nicht als Frequenz / Anzahl-Beschränkungen verstanden habe... Jedenfalls scheint das nur Server-Seitig behebbar zu sein?
Beim Safari kann ich das lösen über die Developer-Tools → Developer Settings → Security → disable local file restrictions (siehe hier). Beim iPad leider nicht, bzw. nur etwas kompliziert über USB und nur einmalig (siehe hier). Das ganze ist aber fürs iPad eigentlich gedacht, daher sollte es insbesondere dort funktionieren.
Hatte jemand schonmal dieses Problem und weiß wie man damit am besten umgeht?
Danke!
Kommentar