Seite 1 von 2

Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Server

Verfasst: 05.06.2020 22:35
von Kurzer
Moin zusammen,

ich habe mir heute die SpiderBasic-Demo runtergeladen, weil ich prüfen möchte, ob ich damit ein bestimmtes Projekt umsetzen kann.

Ich möchte testweise einer PHP-Datei per POST Parameter übergeben. Das funktioniert soweit gut, aber leider nur, wenn ich die SpiderBasic-Datei compiliere und dann die erzeugten html und js Dateien in das Verzeichnis des lokalen Webservers kopiere und dann im Browser manuell die URL aufrufe.

Das wäre in meinem Fall http://127.0.0.1/spider/test.html

Wenn ich den Code per F5 starte, dann sieht die URL so aus: http://127.0.0.1:8080/SpiderBasic_Compilation0.html und der HttpRequest() schlägt fehl.

Der SB code sieht so aus:

Code: Alles auswählen

  Procedure HttpGetEvent(Success, Result$, UserData)
    If Success
      Debug Result$
    Else
      Debug "HTTPRequest(): Error"
    EndIf
  EndProcedure
  
  HTTPRequest(#PB_HTTP_Post, "http://127.0.0.1/spider/post.php", "wert1=Hallo&wert2=Welt", @HttpGetEvent())
Kann ich SB irgendwie konfigurieren, dass das temporäre Ausführen per F5 Taste in der richtigen Domäne ausgeführt wird und der HttpRequest() Aufruf klappt?

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 05.06.2020 23:30
von NicTheQuick
Das ist glaube ich ein grundlegendes Problem. In der Regel ist es nicht erlaubt Post-Requests auf eine andere Domain-Port-Kombination zu senden. Das muss im Webserver erlaubt werden, in dem Fall auf der Seite des PHP-Webservers. Zum Beispiel durch den Header "Access-Control-Allow-Origin http://127.0.0.1:8080". Details dazu findest du im Netz. Wenn nicht nochmal fragen.

Edit:
Oder etwas ausführlicher. Dein Browser würde gerne den POST-Request machen. Da es eine andere Domain/Port-Kombination ist, fragt er aber erst mit dem OPTIONS-Request, ob er von der aktuellen Domain/Port-Kombi aus diesen Request ausführen darf. Daraufhin kann der Server das bestätigen oder nicht. Und danach entscheidet dein Browser, ob er es letztendlich tut.

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 05.06.2020 23:52
von Kiffi
zusätzlich zu NicTheQuicks Antwort: Oftmals ist es hilfreich, wenn Du im Fehlerfall die Entwickler-Konsole des Browsers öffnest (meist mit <F12>) und Dir dort anschaust, was beispielsweise im Network-Tab steht. In Deinem Fall dürfte das ein CORS-Fehler sein.

Grüße ... Peter

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 06.06.2020 06:54
von Kurzer
Danke euch beiden, ganz genau so ist es.

in den Devtools (F12) steht unter Network/Fehlern: "Access to XMLHttpRequest at 'http://127.0.0.1/spider/post.php' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource."

Ich recherchiere dazu heute mal im Netz.

Gruß Kurzer

PS: Ich kann ja unter Compiler-Options eine Webserveradresse eintragen (da steht jetzt localhost:8080), aber dort brauchts ja zwangsweise immer den Port dazu. 127.0.0.1:8080 funktioniert daher auch nicht (möglicherweise weil 127.0.0.1 <> 127.0.0.1:8080 ?)

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 06.06.2020 10:30
von helpy
Kurzer hat geschrieben:PS: Ich kann ja unter Compiler-Options eine Webserveradresse eintragen (da steht jetzt localhost:8080), aber dort brauchts ja zwangsweise immer den Port dazu. 127.0.0.1:8080 funktioniert daher auch nicht (möglicherweise weil 127.0.0.1 <> 127.0.0.1:8080 ?)
Wenn Du zwingend einen Port eintragen musst, dann probiere: 127.0.0.1:80
Das ist der Standard-Port für WebServer.

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 06.06.2020 11:02
von Kurzer
Das hilft leider auch nicht. Da bekomme ich:
Webserver hat geschrieben:Objekt nicht gefunden!
Der angeforderte URL konnte auf dem Server nicht gefunden werden. Sofern Sie den URL manuell eingegeben haben, überprüfen Sie bitte die Schreibweise und versuchen Sie es erneut.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.

Error 404
127.0.0.1
Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.2
Dann fiel mir ein, dass ja alles in einem Unterverzeichnis liegt. Also habe ich in den Compiler-Options "127.0.0.1:80/spider" eingetragen und den gesamten Sourcecode auch direkt in das Webserver-Verzeichnis verschoben (htdocs\spider\), damit das temporäre compilat auch genau in diesem Verzeichnis erstellt wird (SpiderBasic_Compilation0.html).

Die im Browser angezeigt URL nach F5 siehr dann so aus: http://127.0.0.1/spider/SpiderBasic_Compilation0.html
Aber es tut sich gar nichts. Nur ein weißes Browsertab ohne Inhalt.

Daran ändert sich leider auch nichts, wenn ich den HttpRequest von
HTTPRequest(#PB_HTTP_Post, "http://127.0.0.1/spider/post.php", "wert1=Hallo&wert2=Welt", @HttpGetEvent())
auf
HTTPRequest(#PB_HTTP_Post, "post.php", "wert1=Hallo&wert2=Welt", @HttpGetEvent())

ändere.

Ich komme erst heute Nachmittag dazu weiter im Netz zu recherchieren, aber vielen Dank für eure Hinweise, so kann man einige Lösungsansätze schon mal ausschließen.

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 06.06.2020 11:08
von helpy
OK!

Noch etwas:
==> http://127.0.0.1/spider/ ... verweist auf ein bestimmtes lokales Verzeichnis!
==> http://127.0.0.1:8080/spider/ ... verweist auf ein bestimmtes lokales Verzeichnis (SpiderBasic-Projektverzeichnis)!

Sind die beiden Verzeichnisse identisch?

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 06.06.2020 11:15
von Kurzer
Ich habe jetzt mal direkt draufgeklickt auf deine links.

==> http://127.0.0.1/spider/ zeigt mir den korrekten Inhalt des Webserververzeicnnisses an.
==> http://127.0.0.1:8080/spider/ zeigt mir "Error 404: Not Found File not found" an.

127.0.0.1/spider nimmt aber der Compiler-Options Dialog nicht an, weil da der port fehlt. Spider will unbedingt ein : nach der Adresse haben.
Ich habe es auch schon mit 127.0.0.1:/spider in den Compiler-Options versucht, im Browser steht dann korrekt http://127.0.0.1/spider/SpiderBasic_Compilation0.html, aber halt wieder nur ein weißer Tab "mit ohne Alles".

PS: Ich würde mir ja auch ne Batch schreiben, die das F5 Compilat dann umkopiert, so dass ich im Browser nur einen Reload mache, aber das F5 Compilat sieht ja ganz anders aus als die compilierte Web-App.

Im F5 Compilat sind diverse Veerweise auf ein library-Verzeichnis.

Code: Alles auswählen

<script type="text/javascript" src="/spiderbasic/libraries/javascript/platform.js"></script>
<script type="text/javascript" src="/spiderbasic/libraries/javascript/init.js"></script>
<script type="text/javascript">dojoConfig.baseUrl = '/spiderbasic/libraries/javascript/'; </script>
Das Verzeichnis habe ich aber auch schon mal vom SpiderBasic Installationsverzeichnis in das Webserververzeichnis kopiert, so dass das F5 Compilat es eigentlich finden müsste, aber auch hier wieder nur der weite Browser-Tab.

PS2: Und leider habe ich in der IDE auch keinen Shortcut/Toolbar-Konfigeintrag für ein automatisertes "CreateApp" gefunden. Evtl. würde es mit einem manuellen Aufruf des Compilers gehen, so dass ich nicht F5 drücke sondern eine Batch aufrufe, die mir diese Datei als WebApp erzeugt. Muss ich mir heute Nachmittag mal genauer ansehen.

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 06.06.2020 11:29
von helpy
Ich nehme mal an, Du hast einen eigenen Webserver (http://127.0.0.1 wahrscheinlich Default-Port 80) aufgesetzt, der greift auf ein bestimmtes Verzeichnis zu.

SpderBasic startet einen eigenen Webserver, der ebenfalls die Dateien aus einem bestimmten Verzeichnis die Daten abruft. Dort wird mit Sicherheit auch die Datei SpiderBasic_Compilation0.html abgelegt und aufgerufen.

Die beiden Verzeichnisse sind mit großer Wahrscheinlichkeit unterschiedlich!
Und genau das ist das Problem!

Re: Brauche mal Hilfe zum HTTPRequest Aufruf auf lokalem Ser

Verfasst: 06.06.2020 11:37
von Kurzer
Hmm, ja ich starte einen eigene Webserver, das ist richtig. Den brauche ich, weil die PHP Datei SQL Datenbankfunktionen enthalten wird, die ich lokal testen möchte.

Aber die beiden besagten Verzeichnnisse auf der Festplatte sind identisch.

Bild