Hi, Andreas Goetz, 03.04.2013 08:46: >>> ich hatte den Wunsch, remote (d.h. per iphone-app) auf die mw >>> zuzugreifen. Aus Sicherheitsgründen ist das nur per JsonP, nicht jedoch >>> json möglich. >> interessante sache irgendwie... >> es ist doch eigentlich im frontend vorgesehen, kanaele von verschiedenen >> middlewares abbonieren zu koennen - funktionierte das bisher garnicht?! > Kann nicht. Allerdings habe ich auch keinen Platz in rigendeiner Config > gefunden wo ich eine zweite MW hätte eintragen können- für's durch JS > hacken fehlte mir bisher die Zeit. Wäre aber eine spannende Aufgabe auch > daran ein wenig zu basteln.
Das ist jetzt auch schon möglich. Kann man einfach selbst testen, indem man in seinem Frontend einen der öffentlichen Kanäle von demo.volkszaehler.org abonniert. > https://github.com/volkszaehler/volkszaehler.org/pull/44 Ich paste einfach mal meinen Kommentar von dort: JSONP wird bereits über den Parameter "padding" unterstützt, siehe http://wiki.volkszaehler.org/development/api/reference?s[]=padding#json Dieser wird auch schon vom frontend benutzt, wenn man eine andere als die lokale middleware ausgewählt hat. Allerdings belässt padding den Content-type auf application/json, das sollte wohl wie bei dir application/javascript sein, das sollten wir noch fixen. > In der jetzigen Version ist das allerdings ein potentielles > Sicherhitsrisiko- es lassen sich ja nicht nur Daten abfragen sondern > auch löschen. Was fehlt ist m.E. eine Konfigurationsoption mit der jsonp > standardmäßig erstmal deaktiviert ist. Warum sollte JSONP für die middleware ein Sicherheitsrisiko sein? Wenn man die UUID kennt und die middleware erreichen kann, kann man das auch so über die API machen. Was ich an JSONP skurril finde (zumindest soweit ich das verstanden habe): Wegen der same-origin-policy kann man nicht einfach JSON benutzen. Um das zu umgehen, lädt man sich javascript-code von einem fremden Server!?! Ich habe zumindest nirgendwo gesehen, daß geprüft wird, ob der Server tatsächlich sowas wie "callback_methode({daten...})" zurückgibt, oder nicht beliebigen anderen javascript-code, der z.B. die cookies ausliest und für alle Kanäle ein delete macht.