Seite 1 von 1

Indexseite mit Parameter

Verfasst: Di, 12. Sep 2017 10:59
von Rudolf
Hallo,
ich brauche eine Weiche für den Login damit ich verschiedene Indexseiten aufrufen kann. Zuerst dachte ich dass ich einen Parameter angeben kann, geht aber nicht, z.B. localhost:81?action=login1 ergibt The requested file was not found ! aus der Methode onnotfound(). Mit login1.localhost:81 geht es, ich kann dann mit oClient:HTTPRequest:host() login1 rausfiltern. Habe ein Domain für meinen Webserver registriert und eine Umleitung auf die IP und den Port gemacht, hier funktioniert es wiederum nicht. Wie kann ich also unterschiedliche Logins für einen Webserver machen ?
Grüße
Rudolf

Re: Indexseite mit Parameter

Verfasst: Di, 12. Sep 2017 11:12
von Martin Altmann
Moin Rudolf,
Boris hat doch ein ganz gutes Beispiel dabei - baue einfach subdomains! Die kannst Du dann auch entsprechend verzweigen.
Dazu nutzt Du einfach den FilterRequest:

Code: Alles auswählen

Function FilterRequest(oClient)
  Local i
  Local cHost := oClient:HTTPRequest:Host()
  Local cPath := oClient:HTTPRequest:Path()

  if valtype( cHost ) == "U"
  	cHost := ""
  endif
  if valtype( cPath ) == "U"
  	cPath := ""
  endif
  // strip out port numbers
  if (i := At(':',cHost)) > 0
    cHost := Left(cHost,i-1)
  endif
	if lower( left( cHost, 9 ) ) == "meldungen"
		cHost := ""
		if cPath $ "/\" .or. Empty(cPath)
			cPath := "/index.html"
		endif
	elseif lower( left( cHost, 12 ) ) == "kundenportal"
		cHost := ""
		if cPath $ "/\" .or. Empty(cPath)
			cPath := "/Login"
			oClient:HTTPRequest:StartLine += "?"
		endif
	elseif .not. empty( cHost )
		cHost := "/altem"
		if cPath $ "/\" .or. Empty( cPath )
			cPath := "/index.html"
		endif
	endif
  // modify requested path
  cPath := cHost + cPath
  oClient:HTTPRequest:Path(cPath)
Return .T.
den Du wie folgst einbaust:

Code: Alles auswählen

MEMVAR->oWebServer:FilterRequest  := {|o| FilterRequest(o)}
In meinem Beispiel wird aus meldungen.altem.de :arrow: /index.html
aus kundenportal.altem.de :arrow: /Login?
aus altem.de (oder www.altem.de) :arrow: /altem/index.html

Viele Grüße,
Martin

Re: Indexseite mit Parameter

Verfasst: Di, 12. Sep 2017 13:37
von Rudolf
Hallo Martin,
danke, so ähnlich habe ich es gemacht, aber ich kann auf einem anderen Rechner im Netzwerk mit dem Webserver nicht z.B. kundenportal.192.168.0.105:81 aufrufen, das geht nur mit localhost. Auch von außerhalb geht es nicht.
Grüße
Rudolf

Re: Indexseite mit Parameter

Verfasst: Di, 12. Sep 2017 13:49
von Martin Altmann
Hallo Rudolf,
das kannst Du auch nicht - dafür muss ein entsprechender Eintrag im DNS vorliegen (oder in der lokalen "C:\Windows\System32\drivers\etc\hosts").
Im letzteren Fall schreibst Du Dort (auf dem PC, von dem aus Du testen willst) z.B. rein:

Code: Alles auswählen

192.168.0.105       kundenportal.webserver.localhost
192.168.0.105       meldungen.webserver.localhost
192.168.0.105       www.webserver.localhost
Dann kannst Du in Deinem Browser kundenportal.webserver.localhost als Adresse eingeben (oder eine der anderen beiden), landest immer auf dem selben Zielserver, der aber anhand des FilterRequest dann unterschiedlich reagiert.

Viele Grüße,
Martin

Re: Indexseite mit Parameter

Verfasst: Mi, 13. Sep 2017 22:38
von DelUser01
Wie Matin schon geschrieben hat müsstest Du verschiedene (Sub-)Hosts verwenden.
Die Web-Server arbeiten vorrangig mit Host-Headern (DNS-gesteuert).
In Intra-Netzen kann das schon über mehrere IP-Adressen je Netzwerkkarte gemacht werden, ist aber bei public Hostern nicht mehr üblich bzw machbar.

Re: Indexseite mit Parameter

Verfasst: Do, 14. Sep 2017 9:23
von Rudolf
Hallo,
danke für Eure Antworten, dann muss ich mir eine andere Methode suche, mich wundert nur dass ich keine Parameter an die Index Seite übergeben kann die ich mit oServer:IndexFile definiere.
Grüße
Rudolf

Re: Indexseite mit Parameter

Verfasst: Do, 14. Sep 2017 9:53
von Rudolf
Hallo,
Problem gelöst, ich prüfe im Filter einfach auf den String im Path und ändere die Index Seite, das geht anscheinend immer.
Grüße
Rudolf