Linuchs: Mehrere Probleme mit/ohne Subdomain www.

Moin,

erst kürzlich habe ich bemerkt, dass meine Seiten ganz unterschiedlich aussehen und reagieren, je nachdem. ob sie mit oder ohne vorangestelltem www. aufgerufen werden.

  1. mit Javascript gesetzte Cookies werden nicht erkannt,
  2. Font wird (vom FF) abgelehnt,
  3. Das Help-System mit Ajax funktioniert nicht.

----- zu 1.

auf der Seite http://remso.eu/?TYP=7 (ohne www) setzt Javascript bei Klick auf das Symbol Notizzettel ein Cookie. Der Veranstaltungstyp Shanty wird gespeichert:

function setCookie( cname, cvalue ) {
    var d = new Date();
    d.setTime(d.getTime() + (90*24*60*60*1000)); // 90 Tage aufbewahren
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/";
    alert ( "setCookie( "+cname+", "+cvalue+" )" );
 }
... setcookie( "TYP", 7 );

Beim nächsten Seitenaufruf wird Cookie von PHP gelesen und unter dem Menüpunkt [myRemso] ein Link zum Shanty-Kalender angeboten.

Wird die Seite aber als http://www.remso.eu/?TYP=7 (mit www) aufgerufen, kann PHP das Cookie nicht finden. Woran kann das liegen?

Nach meiner Recherche soll path=/ die Gültigkeit für Subdomains sicherstellen.

----- zu 2.

Unter www.remso.eu kommt die Fehlermeldung:

"downloadable font: download failed (font-family: "Lato-Thin" style:normal weight:normal stretch:normal src index:0): bad URI or cross-site access not allowed source: http://remso.eu/css/Lato-Thin.ttf"

Wie kann ich die Schrift trotzdem verwenden?

----- zu 3.

Mir ist bekannt, dass Ajax empfindlich auf andere Domains reagiert. Hier muss ich programmtechnisch noch was ausprobieren. Falls das Problem bleibt, beschreibe ich es genauer.

Linuchs

Linuchs

  1. erst kürzlich habe ich bemerkt, dass meine Seiten ganz unterschiedlich aussehen und reagieren, je nachdem. ob sie mit oder ohne vorangestelltem www. aufgerufen werden.

    Gerade keine Zeit / Muße im Detail auf die Punkte einzugehen... Aber: aus verschiedenen Gründen wirst Du beide Versionen nicht wollen und Dich für eine entscheiden: wenn "remso.eu" also für Dich passt, dann leite doch einfach alle Anfragen an "www.remso.eu" per HTTP 301 nach "remso.eu" weiter und Du hast sofort Ruhe.

    1. Hello,

      wenn "remso.eu" also für Dich passt, dann leite doch einfach alle Anfragen an "www.remso.eu" per HTTP 301 nach "remso.eu" weiter und Du hast sofort Ruhe.

      ... und dann sinnvollerweise gleich auf https://remso.eu umleiten.

      @KH:
      Nachdem ich das mit den Zertifikaten mittels getssl und letsencrypt nun ca. 90 von 150 Mal schon geübt habe, kann ich Dir gerne dabei helfen. Es bleibt ja leider nicht nur beim Zertifikat beschaffen und TLS einrichten, meistens müssen die Seiten doch überarbeitet werden bezüglich der Links.

      Liebe Grüße
      Tom S.

      --
      Es gibt nichts Gutes, außer man tut es
      Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
      1. Lieber TS,

        meistens müssen die Seiten doch überarbeitet werden bezüglich der Links.

        wiebitte? Links müssen bei HTTPS "überarbeitet" werden? Alle Links auf einer Website, die auf innerhalb eben dieser verweisen, sollten auf alle Fälle relativ notiert worden sein - sonst hat der Ersteller Unsinn angestellt!

        Liebe Grüße,

        Felix Riesterer.

        1. Hello,

          meistens müssen die Seiten doch überarbeitet werden bezüglich der Links.

          wiebitte? Links müssen bei HTTPS "überarbeitet" werden? Alle Links auf einer Website, die auf innerhalb eben dieser verweisen, sollten auf alle Fälle relativ notiert worden sein - sonst hat der Ersteller Unsinn angestellt!

          Habe ich 'was anderes behauptet? Oder hast DU jetzt Unsinn geschrieben?
          Ich habe jetzt 92 von 150 Seiten durch. Meistens musste ich Hand anlegen!

          Das geschieht dann meistens bei den Secondary Requests, wenn z. B. eine Image Source der Seite von einer anderen Domain bezogen wird.

          Liebe Grüße
          Tom S.

          --
          Es gibt nichts Gutes, außer man tut es
          Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
          1. Lieber TS,

            Alle Links auf einer Website, die auf innerhalb eben dieser verweisen, sollten auf alle Fälle relativ notiert worden sein - sonst hat der Ersteller Unsinn angestellt!

            Habe ich 'was anderes behauptet?

            echt jetzt? Das ist Deine Arbeit?

            Oder hast DU jetzt Unsinn geschrieben?

            Das ist grundsätzlich eine Möglichkeit.

            Ich habe jetzt 92 von 150 Seiten durch. Meistens musste ich Hand anlegen!

            Mein Beileid.

            Das geschieht dann meistens bei den Secondary Requests, wenn z. B. eine Image Source der Seite von einer anderen Domain bezogen wird.

            Auch das noch!? Da möchte ich nicht mit Dir tauschen müssen!

            Liebe Grüße,

            Felix Riesterer.

  2. Zusatzfrage:

    Kann ich die gesamten Cookies mit Javascript lesen, also auch Verfalldatum und die Eigenschaft path=/ ?

    1. Tach!

      Wird die Seite aber als http://www.remso.eu/?TYP=7 (mit www) aufgerufen, kann PHP das Cookie nicht finden. Woran kann das liegen?

      Das ist eine andere Domain. Subdomains sin düber den Parameter domain zu steuern.

      Nach meiner Recherche soll path=/ die Gültigkeit für Subdomains sicherstellen.

      path gilt für Subdirectories, nicht Subdomains.

      Kann ich die gesamten Cookies mit Javascript lesen, also auch Verfalldatum und die Eigenschaft path=/ ?

      Nein. Wenn sie mit HttpOnly markiert sind, bekommst du sie nicht mit Javascript gelesen. Und die verfallenen vermutlich auch nicht. Aber das kannst du ja einfach testen.

      dedlfix.

      1. Moin dedlfix,

        Das ist eine andere Domain. Subdomains sind düber den Parameter domain zu steuern.

        Ja, so klappt es, danke (hier die Lösung fürs Archiv):

          function setCookie( cname, cvalue ) {
            var d = new Date();
            d.setTime(d.getTime() + (90*24*60*60*1000)); // 90 Tage aufbewahren
            var expires = "expires="+d.toUTCString();
            document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/;" + " domain=remso.eu; ";
            alert ( "setCookie( "+cname+", "+cvalue+" )" );
          }
        

        Linuchs

        1. Hallo

            function setCookie( cname, cvalue ) {
              var d = new Date();
              d.setTime(d.getTime() + (90*24*60*60*1000)); // 90 Tage aufbewahren
              var expires = "expires="+d.toUTCString();
              document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/;" + " domain=remso.eu; ";
              alert ( "setCookie( "+cname+", "+cvalue+" )" );
            }
          

          An den Stellen, wo tatsächlich nur Stringverkettungen stattfinden, ohne, dass mit Code vorgegebene oder berechnete Werte eingefügt werden, kann die Verkettung auch weggelassen werden. Konkret betrifft das in deinem Code die Pfad- und Domainangaben für das Cookie.

          document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/; domain=remso.eu;";
          

          Man kann auch einen Schritt weiter gehen und die vorher stattfindende Verkettung für die Variable expires weglassen. Das spart einen weiteren Operationsschritt.

          document.cookie = cname + "=" + cvalue + "; expires=" + d.toUTCString() + "; path=/; domain=remso.eu;";
          

          Ob das in relevanter Weise Ausführungszeit spart, wage ich zwar zu bezweifeln, ich kann da aber trotzdem nicht hinsehen, ohne, dass es in den Fingern juckt. 😉

          Tschö, Auge

          --
          Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
          Toller Dampf voraus von Terry Pratchett
  3. Nach meiner Recherche soll path=/ die Gültigkeit für Subdomains sicherstellen.

    Da biste falsch informiert. Vielmehr ist es der domain=".example.org" Parameter. Beachte den vorangestellten Punkt.

  4. Auf Seite wiki.selfhtml.org habe ich gefunden:

    "Dieses Beispiel legt für alle Seiten der Domain „selfhtml.org“, einschließlich Subdomains eine rotbraune Schriftfarbe fest:"

    @document domain('selfhtml.org') {
      * {color: #780000;} /* # 3 # */
    }
    

    Und damit dieses probiert:

    @document domain('remso.eu') {
      @font-face {
        font-family: 'Lato-Thin';
        src: url('http://remso.eu/css/Lato-Thin.ttf') format('truetype');
      }
    }
    

    Jetzt wird das font aber gar nicht mehr gelden (FF), auch für die Hauptdomain nicht.

    Kann man die @ nicht schachteln oder habe ich einen Fehler gemacht?

    Linuchs

    1. Lösung:

      @font-face {
        font-family: 'Lato-Thin';
        src: url('Lato-Thin.ttf') format('truetype');
      }
      

      Da das font im selben Verzeichnis liegt wie diese basis.css, funktioniert das.

      Habe ich einfach mal ausprobiert. Dass Lato-Thin.ttf ohne weitere Angaben eine URL sein soll, hätte ich nicht gedacht. Klappt auch bei remso.de und remso.org - Whow!

      Linuchs