AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Webbroker. PageProducer und transparente HTML-Tags
Thema durchsuchen
Ansicht
Themen-Optionen

Webbroker. PageProducer und transparente HTML-Tags

Ein Thema von Delbor · begonnen am 28. Jun 2016 · letzter Beitrag vom 4. Jul 2016
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 30. Jun 2016, 20:52
Hi nahpets
Eben habe ich mir den Qellcode nochmal anzeigen lassen - da ist nichts von einem Viewsource-Tag. Aber in der TXT kommt das vor, und im erssten vorkommen steht offenbar auch ein Hinweis auf den Ursprung: Kaspersky. Das ist meine Firewall.
Übrigens: Im Angehängten Jpeg siehst du den von dir geposteten Code ohne diesen ViewSource-Zusatz als Screenshot.

Zitat:
Wenn nein, wie sieht die Url aus, über die Du das Bild, durch händische Eingabe der Url, im Browser angezeigt bekommst?
Da komm ich doch etwas ins schwimmen. Welche URL? Wenn ich die Datei im Browser öffne, steht dies in der Adresszeile:
Zitat:
file:///E:/DelphiXE8%20Corner/DelphiXE8VclCorner/DelborWebserverXE8/DelborDataSnapServer/Images/Logo/Delbor_8.jpg
Ich habe jetzt gerade die Localhost-URL wie unten ergänzt:
Zitat:
localhost:8080/DelborDataSnapServer/Images/Logo/Delbor_8.jpg
Resultat war beide Male blanker Bildschirm.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 30. Jun 2016, 22:42
Wenn deine Verzeichnis-Struktur so aussieht
Code:
/html
/Images
  /Logo
    Delbor_8.jpg
und die URL zu der Seite http://localhost:8080 ist, dann kann ich mir schon gut vorstellen, warum du auf die Bilder nicht zugreifen kannst.

Ich wette mal der Root-Pfad für den Webservice verweist auf /html . Somit kannst du auf alles zugreifen was sich unterhalb von /html befindet.

Wo befindet sich /Images ? Eben, an einer Stelle die du vom Webservice aus gesehen nicht erreichen kannst, weil eben nicht unterhalb von /html .

Und wie lösen wir das Problemchen?

Kopiere den gesamten Ordner Images in den Ordner html
Code:
/html
  /Images
    /Logo
      Delbor_8.jpg
/Images
  /Logo
    Delbor_8.jpg
und du solltest (d)ein Bild sehen, wenn du http://localhost:8080/Images/Logo/Delbor_8.jpg aufrufst.

Falls das nicht klappen sollte, dann ist dein Root-Pfad evtl. auch der html2 Ordner. Welcher konkret, das kannst nur du wissen (solltest du wissen).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (30. Jun 2016 um 22:52 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 1. Jul 2016, 06:59
Hi zusammen
Zitat:
Ich wette mal der Root-Pfad für den Webservice verweist auf
Was ist der Root-Pfad der Anwendung? Derjenige, der der in der DefaultAction,Pathinfo angegeben ist? Das ist per Voreinstellung "/". Auf meinem Windowssystem gibts den eigentlich nicht, unter Linux wäre dies.
Davon ausgehend, dass der Root deas html-Verzeichnis ist/sein sollte hab ich das mal entsprechend abgeändert.
Es änderte sich nichts...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 1. Jul 2016, 07:12
Ich denke du bist besser beraten erst mal mit einer statischen Website anzufangen, dann ist es einfacher sich mit den Basics eines Bereichs vertraut zu machen.

Zwei Dinge gleichzeitig zu handeln, die man beide nur sehr vage versteht, ist wie jonglieren mit zwei Tigern.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 1. Jul 2016, 08:57
Hi Sir Rufo
Zitat:
Ich denke du bist besser beraten erst mal mit einer statischen Website anzufangen, dann ist es einfacher sich mit den Basics eines Bereichs vertraut zu machen.

Zwei Dinge gleichzeitig zu handeln, die man beide nur sehr vage versteht, ist wie jonglieren mit zwei Tigern.
Da kannst du recht haben.

Andrerseits habe ich eben in der Help festgestellt, dass die Fragen offenlässt. Wie dem auch sei:

Nachdem ich mal deinen Vorschlag, das Verzeichnis 'Images' in den Ordner 'html' kopiert habe, erneut Durchsteppte uund mir die jeweiligen Werte von Request.Pathinfo notierte, stellte ich fest, dass schon beim zweiten durchsteppen dieser Wert auf mein Imageverzeichnis zeigte - das heisst schlicht und einfach: Ich muss diese Anforderung nun noch bearbeiten. Und wenn ich das dann auch noch richtig mache, werden meine Bilder auch angezeigt.
Bei früherem Durchsteppen ist mir das nicht aufgefallen, aber ich bin sicher, das dieser PathInfo-Wert auch früher schon vorhanden war.
Die Frage, die die Help hier offen lässt, ist schlicht, was das Verzeichnis '/' ist, bzw. sein muss. Enthielte die Help in diesem Fall einen Hinweis darauf, dass dies das Verzeichnis ist, in dem die HTML-Dateien liegen (Und nicht das Wurzelverzeichnis der Anwendung), wäre vieles klarer. Auch wenn mein schlaues Buch darauf hinweist, das das Rootverzeichnis einer HTML-Anwwendung genau dies ist.
Und eines scheint mir nun auch klar zu sein. die Antwort, die schlussendlich abgeschickt wird, muss alle Infos enthalten, die das HTML-Dokument anfordert.

Stark irritiert hat mich auch, dass der Browser, also der Client, die Bilder aufgrund der img-Tags im HTML-Quelltext anfordert. Das widerspricht der Tatsache, dass die Verbindung geschlossen wird, wenn die Antwort abgeschickt ist.

Gruss
Delbor
PS:
Zitat:
Ich denke du bist besser beraten erst mal mit einer statischen Website anzufangen,
Was genau ist denn eine statische Webseite? Ist dies eine Webseite, die so ausgegeben wird, wie sie entworfen wurde, inklusive der in Img-Tags referfenzierten Bildern, oder ist dies eine Webseite, die nur den Text ausgibt, der im HTML-Dokument definiert ist?
Ich hatte auch schon die Idee, einfach mal in einem Verzeichnis einige HTML-Seiten abzulegen, eine davon per Browser/Datei öffnen anzuzeigen und mal zu sehen, ob da Bilder angezeigt würden. Ich denke, das wäre so. Aber einen Test wärs trotzdem Wert.
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 1. Jul 2016 um 09:09 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 1. Jul 2016, 09:16
Stark irritiert hat mich auch, dass der Browser, also der Client, die Bilder aufgrund der img-Tags im HTML-Quelltext anfordert. Das widerspricht der Tatsache, dass die Verbindung geschlossen wird, wenn die Antwort abgeschickt ist.
Ich vermute du bringst hier Dinge durcheinander oder missverstehst etwas. Ich versuchs mal zu erklären und bitte die mir mehr Ahnung, das ggf. noch zu ergänzen/korrigieren:

Der Browser schickt einen Request an der Webserver (er fordert eine HTML-Seite an). Das kommt dann an der Server-Maschiene an und da übernimmt dann (im Windows-Fall) z.B. der IIS diese Anfrage und leitet die z.B. an die CGI.exe weiter (über den Port weiß er welche CGI, falls es mal mehrere Webanwendungen auf einem Server gibt). Die bearbeitet das und liefert dann eine HTML-Seite zurück. Diese wurde in der CGI mit Hilfe der PageProducer aus den Vorlagen-HTML-Dateien zusammengebaut. Ist aber eine reine HTML-Text-Datei.
In dieser steht z.B. ein <img>-Tag oder ein <link>-Tag über den Bilder oder CSS-Dateien mit dem HTML-Dokument verknüpft werden (ich versuch das Wort eingebettet hier zu vermeiden). Der Browser erkennt nun diese Tags und sieht, das er was nachladen soll. Er sendet also wieder eine Anforderung an den Webserver (den IIS, nicht die CGI.exe). Der versucht dann das Bild oder die CSS-Datei zu finden und schickt das zurück. Beim versucht das zu finden, steckst du gerade fest.

Deswegen um klein anzufangen: Was tipperst du im Browser ein, um deine Webseite aufzurufen? Sowas hier: http://localhost:8080 ?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#7

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 1. Jul 2016, 09:18
Eine statische HTML-Seite ist einfach eine Datei (*.htm oder *.html), die einmalig erstellt und auf den Webserver geladen wird. Diese ändert sich ja nicht ständig, deshalb "statisch". Das Gegenteil sind dynamische Webseiten, wie sie z.B. von CMS erstellt werden. Diese bestehen aus einem Template, das bei der Anfrage von einem Script (PHP, Ruby, Perl, Python, etc.) aufbereitet wird.

Das als ultrakurze und unvollständige Erklärung.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 1. Jul 2016, 10:45
/ ist das Rootverzeichnis des Webservers.

Er kann alles an den anfordernden Client / Browser liefern, was sich in diesem Verzeichnis oder unterhalb davon befindet.
Hier mal eine Mini-HTML-Seite, die nur zum Testen gedacht ist:
Code:
<html>
<head>
<title>index.html</title>
</head>
<body>
<h1>Siehst Du mich?</h1>
<h6>Mein Name ist index.html</h6>
</body>
</html>
Dieses bisserl HTML speicherst Du bitte in eine Datei namens index.html und zwar in das Verzeichnis html.

Nun wechselst Du zum Browser und gibst dort http://localhost:8080/index.html ein.

Bekommst Du die Datei zu sehen?
Wenn ja, so ist das HTML-Verzeichnis das Rootverzeichnis des Webservers. Dann müssen alle Dateien, die über den Webserver geliefert werden sollen, in diesem Verzeichnis oder in darunterliegenden Verzeichnissen liegen.

Bekommst Du die Datei nicht zu sehen?
Dann verschiebe sie in das Verzeichnis oberhalb von html und überprüfe, ob der Browser sie Dir nun (bei unveränderter Url also überhttp://localhost:8080/index.html ) anzeigen kann.
Wenn ja, so hast Du das Rootverzeichnis gefunden.
Wenn nein, so verschiebe die Datei solange im Verzeichnisbaum, bis Du sie im Browser angezeigt bekommst.
Bitte erstelle keine Kopieen der Datei, damit Du sicherstellen kannst, dass die Datei, die (hoffentlich) im Browser angezeigt wird, nur einmal vorhanden ist, damit Du mit Sicherheit sagen kannst: Der Browser hat mir die index.html angezeigt und nicht irgendeine von werweißwievielen.

Eigentlich müsste das Rootverzeichnis aber (egal bei welchem Webserver auch immer) irgendwo in der Konfiguration zu finden sein.
Welchen Webserver nutzt Du denn aktuell?

Die Pfadangaben innerhalb Deiner Webanwendung haben übrigens nichts damit zu tuen. Sie dienen nur der Zuordnung innerhalb der Webanwendung.

Hier mal ein Auszug aus 'ner in die Jahre gekommenen ISAPI.DLL:
Delphi-Quellcode:
  Actions = <
    item
      Default = True
      Name = 'wai'
      PathInfo = '/'
      OnAction = wmwaiAction
    end
    item
      Name = 'waiIndex'
      PathInfo = '/Index'
      OnAction = wmwaiIndexAction
    end
    item
      Name = 'waiReload'
      PathInfo = '/Reload'
      OnAction = wmwaiReloadAction
    end
    item
      Name = 'waiBottom'
      PathInfo = '/Bottom'
      OnAction = wmwaiBottomAction
    end
    item
      Name = 'waiTop'
      PathInfo = '/top'
      OnAction = wmwaiTopAction
    end
    item
      Name = 'waiEdit'
      PathInfo = '/Edit'
      OnAction = wmwaiEditAction
    end
    item
      Name = 'waiSave'
      PathInfo = '/Save'
      OnAction = wmwaiSaveAction
    end
    item
      Name = 'waiSearch'
      PathInfo = '/Search'
      OnAction = wmwaiSearchAction
    end
    item
      Name = 'waiKomplettliste'
      PathInfo = '/Komplettliste'
      OnAction = wmwaiKomplettlisteAction
    end
    item
      Name = 'waiAbfragen'
      PathInfo = '/Abfragen'
      OnAction = wmwaiAbfragenAction
    end
    item
      Name = 'waiUpdate'
      PathInfo = '/update'
      OnAction = wmwaiUpdateAction
    end
    item
      Name = 'waiQTVAbfrage'
      PathInfo = '/qtv'
      OnAction = wmwaiQTVAbrageAction
    end
    item
      Name = 'waiQTVLoadFile'
      PathInfo = '/QTVLoadFile'
      OnAction = wmwaiQTVLoadFileAction
    end>
Die Pathinfo hier dient nur dazu, dass innerhalb der Webanwendung entschieden werden kann, welche Routine der Webanwendung zur Ausgabe des Response genutzt werden soll.

Mögliche Urls für den obigen Auszug könnten also so aussehen (die ISAPI-Dll "hört auf den Namen WebMenu.dll"):
Code:
http://localhost:8080/WebMenu.dll/
http://localhost:8080/WebMenu.dll/Index
http://localhost:8080/WebMenu.dll/Search
Diese Pfadangaben sind absolut unabhängig von der Verzeichnisstruktur der verwendeten Templates oder der Verzeichnisstruktur des Webservers.

Die IMG-Tags in den auszugebenden HTML-Seiten müssen sich daher an die Verzeichnisstruktur des Webservers halten und nicht an die Verzeichnisstruktur der Webanwendung.
Es mag sein, dass die Verzeichnisstruktur der Webanwendung mit der des Webservers übereinstimmt, aber das ist nicht zwingend erforderlich und kann auch nicht als Vorraussetzung erwartet werden.
Auch die von der Webanwendung genutzten Templates, für die Erstellung der HTML-Seiten, können sich ausserhalb des Zugriffs des Webservers befinden.
Im Zugriff des Webservers muss sich alles befinden, was von diesem selbst, ohne Hilfe einer Webanwendung, ausgeliefert werden soll. Hierzu gehören für gewöhnlich die Bilder, CSS-Dateien ...
Vom Ablageort eines HTML-Templates, in einer Verzeichnisstruktur, kann man daher nicht zwingend auf den "korrekten" Ablageort von Bildern, auf die im Template verlinkt werden soll, schließen.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.196 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 1. Jul 2016, 11:14
Hi zusammen
Mal die Prozedur des Defaulthandlers, wie sie zur Zeit besteht - die hat sich etwas weiter entwickelt, seit ich sie zum ersten mal gepostet habe:
Delphi-Quellcode:
procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
if Request.PathInfo = '/html/AufromantischerSpur1.htmlthen
  WebModule1WebActRomanticeRoadAction(Self,Request,Response,Handled);
if Request.PathInfo = '/html/DynamicDelborHome.htmlthen
  WebModule1WebActHomeAction(Self,Request,Response,Handled);
if Request.PathInfo = '/Images/Logo/Delbor_8.jpgthen
  WebModule1WebActImagesAction(Self,Request,Response,Handled);

end;
Da besteht zurzeit das Problem, das die PathInfo "/" nicht behandelt wird, weshalb alles hängt. Ein Durchsteppen durch diesen Code hat folgendes gezeigt
  1. Pathinfo := "/"
  2. Pathinfo := "Images/Logo/"
  3. Pathinfo := "Images/background/"
Bevor ich das abgeändert hatte, rief ich bei Pathinfo = "/" folgende Prozedur auf:
Delphi-Quellcode:
procedure TWebModule1.WebModule1WebActHomeAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  Response.Content := PageProducerHome.Content;
// Response.Content := Response.Content + PageProducerLogo.Content;
// Response.Content := Response.Content + 'Request.PathInfo := ' + Request.PathInfo;
  Response.SendResponse;
end;
Das stützt eigentlich die Aussage, das der Browser alles, was im HTML referenziert wird und kein Link ist (der ja eine komplett andere Webeite anfordert), erneut anfragt. Offen bleibt hier für mich allerdings die Frage, ob ich da nicht einen Fehler mache, wenn ich hier die Antwort schon abschicke?
Andrerseits müsste ich hier ein Bild in einen Stream laden, und den kann ich nicht so einfach an Content übergeben. Will heissen: Response.Content + PageProducerLogo.ContentStream ist nicht möglich
Spannend bleibts auf jeden Fall. Wenn ich so weiterfahre, wie oben im Defaulthandler gezeigt, hab ich bald einmal mehrere A4-Seiten voll if..Then-Abfragen...
Was wiederum heisst: so, wie ichs jetzt mache, ists alles andere alls optimal.

@nahpets: Gerade wollte ich mir vorm abschicken nochmal die Vorschau anzeigen lassen, da hab ich deinen Beitrag gesehen, Den muss ich mir aber etwas genauer zu Gemüte führen und werde deshalb gesondert darauf eingehen. Zumindest mal danke dafür! Auch an alle anderen, die soviel Geduld mit einem Greenhorn wie mir haben!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz