http-request via jQuery

  • 65 Antworten
  • 14684 Aufrufe
*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #15 am: 13. Juli 2015, 13:29:00 »
beforeSend
control.js:20 192.168.125.70:8181/CCU-RemotePC.exe
control.js:21 state=dom.GetObject%28%27BidCos-RF.IEQ0023638%3A1.STATE%27%29.Value%28%29
Kategorie.html?draft=true:1

XMLHttpRequest cannot load http://192.168.125.70:8181/CCU-RemotePC.exe?state=dom.GetObject%28%27BidCos-RF.IEQ0023638%3A1.STATE%27%29.Value%28%29. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.125.60' is therefore not allowed access.

leider noch nichts, aber ich hab jetzt eine url, die ich direkt verwenden kann.

function get_ccu_state(para,that) {
    $.ajax({
// wenn du hier kommentar davor ḿachst
url: "http://" + ccu_base + "?" + para,
// must du diese beiden entfernen
//url: ccu_base,
//data: para,
        method: "GET",
crossDomain: true,

// 2.
// dann hier den kommentar entfernen und wieder mit 1 beginnen
//processData:false,
// 3.
// dann hier den kommentar entfernen und wieder mit 1 beginnen
//traditional:true,
        dataType: "xml",
        beforeSend:function() {
    console.log("beforeSend");
    console.log(ccu_base);
    console.log(para);
        },
        success:function(xml) {
    console.log("success");
    console.log(xml);
            var state = $(xml).find("state").text();
            if(state == "true") {
                that.find("button").css("background-color","#00FF00").text("Ein").val(".State(0)");
            } else if(state == "false") {
                that.find("button").css("background-color","#FF0000").text("Aus").val(".State(1)");
            } else {
                that.find("button").css("background-color","#0000FF").text("Unbekant").val("").prop("disabled",true);
            }
        },
        error:function(jqXHR, textStatus, errorThrown) {
    console.log("error");
    console.log(textStatus);
    console.log(errorThrown);
            that.find("button").css("background-color","#0000FF").text("Unbekant").val("").prop("disabled",true);
        }
    });
}

function ccu_rawurlencode_js(str) {
// 1.
// zuerst hier nach und nach auskommentieren
//return str;
//return str.replace(/'/g, '%27');
//return str.replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29');
return str.replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/:/g, '%3A');
// nur bei diesen nicht
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/\~/g, '%7E').replace(/#/g,'%23');
}

*

Offline stefanbe

  • Administrator
  • Mitglied
  • 2237
Re: http-request via jQuery
« Antwort #16 am: 13. Juli 2015, 21:00:48 »
mach mal die template.html auf und fügr im head bereich ganz oben das ein
<meta http-equiv="Access-Control-Allow-Origin" content="*">
lg stefanbe

*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #17 am: 14. Juli 2015, 12:29:32 »
Ist drinnen, leider keine Änderung  :'(

*

Offline stefanbe

  • Administrator
  • Mitglied
  • 2237
Re: http-request via jQuery
« Antwort #18 am: 15. Juli 2015, 11:02:37 »
ok habs gefunden

du must auf dem server wo die CCU-RemotePC.exe das Access-Control-Allow-Origin setzen

entweder in ner .htaccess oder mit dem webserver der da läuft oder ...

lg stefanbe

*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #19 am: 15. Juli 2015, 12:01:54 »
also die .exe existiert ja nicht wirklich, die ist nur bestandteil der url und kann heißen wie sie will.

du meinst also die .htaccess die auf der Synology läuft, wo Mozilo installiert ist ändern?
also so:
# mozilo generated not change from here to mozilo_end
Options -Indexes
RewriteEngine On
RewriteRule ^(.*)/mod_rewrite_t_e_s_t\.html$ $1/index\.php?moderewrite=ok [L]
RewriteRule \.html$ index\.php [QSA,L]
# mozilo_end
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

... was keine Änderung brachte...
« Letzte Änderung: 15. Juli 2015, 12:03:55 von Dragonfly »

*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #20 am: 15. Juli 2015, 12:48:59 »
Ich versteh gerade nicht, wo der Hänger ist...

bisher hatte ich das so laufen:
mit wget oder curl die seite runterladen, auswerten - befehl setzten, befehl senden.

Kann man nicht einen einfachen request draus bauen, der nur eine url aufruft - also wie in dem allerersten beispiel von mir.
dort konnte ich ja bereits was schalten.
dann wäre zumindest mal sichergestellt, daß die kommunikation über das script geht - danach erst das runterladen des status behandeln?

*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #21 am: 15. Juli 2015, 19:02:48 »
Ok, wenn ich jetzt eine url direkt im browser aufrufe bekomme ich den status in einem neuen tab.
wenn ich nun auf "Ziel speichern unter" gehe, lädt er mir die .exe runter, keine xml - vielleicht ist ja da der wurm drinnen?!

ich häng mal die exe dran.

*

Offline stefanbe

  • Administrator
  • Mitglied
  • 2237
Re: http-request via jQuery
« Antwort #22 am: 15. Juli 2015, 19:08:03 »
das problem liegt daran das die browser es nicht mögen wenn mann in einem iframe nee ander domain aufruft "Access-Control-Allow-Origin".

du müstes es schaffen das der server 192.168.125.70:8181 einen header "Access-Control-Allow-Origin "*"" mit schickt.

ich bin da grad noch an einer anderen idee dran.

lg stefanbe

*

Offline stefanbe

  • Administrator
  • Mitglied
  • 2237
Re: http-request via jQuery
« Antwort #23 am: 15. Juli 2015, 19:12:23 »
der server lauscht auf dem port "8181" wenn du jetzt die domain 192.168.125.70 mit dem port aufrufts weis der server was zu tun ist deshalb das mit der "CCU-RemotePC.exe" die nicht so heisen muss es geht da nur drum parameter mit zu geben.

lg stefanbe

*

Offline stefanbe

  • Administrator
  • Mitglied
  • 2237
Re: http-request via jQuery
« Antwort #24 am: 17. Juli 2015, 11:34:48 »
so hab das geändert kanste es mal ausprobieren?

siehe oben der anhang

lg stefanbe

*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #25 am: 17. Juli 2015, 20:46:17 »
so;

kein fehler da - geht zwar nicht aber:
die console gibt aus:
success - control.js:14
null - control.js:15

wenn jetzt null der "state" ist, was ich annehme, wäre es nur noch eine "fehlkonfiguration"...
die ccu kennt also irgendwas nicht.

den teil hast du ja drinnen gelassen - der geht auch, wenn ich die url händisch zusammenbastle:
dom.GetObject('BidCos-RF.IEQ0023638:1.STATE')

leider sehe ich nirgends mehr die zusammengebaute url, um den fehler eingrenzen zu können.
null kommt im regelfall, wenn das in der klammer in der ccu nicht vorhanden ist.

*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #26 am: 17. Juli 2015, 21:19:40 »
ich hab jetzt noch ein wenig rumprobiert - bekomme beim direkten url-aufruf nur eine "null" zusammen wenn in der klammer was nicht passt:
dom.GetObject('CCU-RemotePC')
das sollte auch ein "true" ergeben - kommt aber leider "null" zurück

oder wenn "state=" nicht da ist:
so geht aber auch nichts:
$button_state = "state=dom.GetObject('CCU-RemotePC')";

*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #27 am: 17. Juli 2015, 21:33:36 »
andererseits, wenn ich hier
else if(state == "null") {
                that.find("button").css("background-color","#FF0000").text("Aus").val(".State(1)");

eingebe, sollte der button ja auf aus sein - bleibt aber auf unbekannt  :'(

*

wasp

  • Gast
Re: http-request via jQuery
« Antwort #28 am: 18. Juli 2015, 21:38:42 »
--- sorry für die einmischung : Aber rein technisch geht das am OS / browser (...) und ggf. lokalem kram wie antivirus oder sw/hw - fws anderen blockern vorbei ?!  ::) :-X Aber sicher ist das ja bedacht...  8)
Irre tiefgehend...  :)

*

Offline Dragonfly

  • Mitglied
  • 37
Re: http-request via jQuery
« Antwort #29 am: 18. Juli 2015, 22:21:04 »
Nunja, es läuft ja von dem PC aus, wo ich teste ein Programm das das gleiche macht und funktioniert.
Sicherheitshalber wurde auch die IP von der Syno freigegeben - obwohl das wahrscheinlich nicht sein muß.

Wenn du dir CCU-RemotePC von mir runterlädst (www.dragonfly.at) kannst du z.B. den Monitor ausschalten.
Wenn nun ein Befehl wie z.B.: http://localhost/screen_off dies machen soll, kann der auch auf einer Webseite auf der anderen Seite der Welt sein, denn "localhost" ist ja der Rechner, mit dem ich den Befehl aufrufe, nicht wo die Webseite gehostet wird  - also reagiert das Programm auch nur dort - zumindest funktioniert das mit normalen Links so.

Also sollte auch hier der Sender des Befehls der PC sein, der das Script aufruft, nicht die Syno. Ausgehend davon sollten alle Wege frei sein...