Daniel J.: mod_rewrite: Rewrite bei JS-Files nicht möglich?

Hallo,
ich setze für ein Projekt folgende Rewrite-Konditionen ein, um ein direktes Anzeigen verschiedener Dateitypen zu verhindern.

RewriteCond %{REQUEST_FILENAME} ^(.*).cnt$ [OR]
RewriteCond %{REQUEST_FILENAME} ^(.*).lng$ [OR]
RewriteCond %{REQUEST_FILENAME} ^(.*).js$
RewriteEngine on
RewriteRule ^(.*)$ neuer_URL

CNT- und LNG-Dateien werden per PHP eingebunden (bei diesen Dateitypen funktioniert die Umleitung auch), während JS-Scripts über das <script>-Tag einbezogen werden. Hier stehen mir nach der Umleitung die Informationen aus der JS-Datei offenbar nicht mehr zur Verfügung, die Fehlerkonsole meldet mir dann das Fehlen einer Funktion, die in dieser JS-Datei definiert ist. Wie sage ich nun dem Server, dass er bei JS nur dann umleiten soll, wenn diese nicht von meinem Hauptscript angefordert wird - wenn also zum Beispiel jemand den Namen der Datei in die Adresszeile eingibt, um sie zu lesen oder herunterzuladen?

Gruß,
Daniel

  1. Wie sage ich nun dem Server, dass er bei JS nur dann umleiten soll, wenn diese nicht von meinem Hauptscript angefordert wird - wenn also zum Beispiel jemand den Namen der Datei in die Adresszeile eingibt, um sie zu lesen oder herunterzuladen?

    Es gibt keine verlässliche Methode zu sagen, welche Ressource eine andere Ressource anfordert.
    Der Referrer ist unzuverlässig.
    Eine andere Methode, Cookies, gibt dir Aufschluss über den Agent.
    Dies bedingt jedoch, dass ein Cookie auswertender Prozess die Auslieferung von zu schützenden Ressourcen managed.
    Im einfachsten Fall kannst du eine Cookieabfrage bereits in htaccess integrieren.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. »»Es gibt keine verlässliche Methode zu sagen, welche Ressource eine andere Ressource anfordert.

      Der Referrer ist unzuverlässig.
      Eine andere Methode, Cookies, gibt dir Aufschluss über den Agent.
      Dies bedingt jedoch, dass ein Cookie auswertender Prozess die Auslieferung von zu schützenden Ressourcen managed.
      Im einfachsten Fall kannst du eine Cookieabfrage bereits in htaccess integrieren.

      mfg Beat

      Danke, das könnte mich sogar weiterbringen. :-)

  2. Hello,

    ich setze für ein Projekt folgende Rewrite-Konditionen ein, um ein direktes Anzeigen verschiedener Dateitypen zu verhindern.

    RewriteCond %{REQUEST_FILENAME} ^(.*).cnt$ [OR]
    RewriteCond %{REQUEST_FILENAME} ^(.*).lng$ [OR]
    RewriteCond %{REQUEST_FILENAME} ^(.*).js$
    RewriteEngine on
    RewriteRule ^(.*)$ neuer_URL

    CNT- und LNG-Dateien werden per PHP eingebunden (bei diesen Dateitypen funktioniert die Umleitung auch), während JS-Scripts über das <script>-Tag einbezogen werden. Hier stehen mir nach der Umleitung die Informationen aus der JS-Datei offenbar nicht mehr zur Verfügung,

    Klar, weil nur da deine "Umleitung" überhaupt greift.
    Der Rewrite-Modus kann doch nur aktiv werden, wenn per HTTP/HTTPs zugegriffen wird und nicht, wenn direkt über das Dateisystem zugegriffen wird.

    Deine JavaScript-Files MÜSSEN vom Client angefordert werden können!

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. Hi,

    Wie sage ich nun dem Server, dass er bei JS nur dann umleiten soll, wenn diese nicht von meinem Hauptscript angefordert wird - wenn also zum Beispiel jemand den Namen der Datei in die Adresszeile eingibt, um sie zu lesen oder herunterzuladen?

    Du möchtest also dein Script "schützen"?

    Dass das absolut nicht geht, kannst du zahlreich im Archiv recherchieren.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Hi,

      Du möchtest also dein Script "schützen"?

      Dass das absolut nicht geht, kannst du zahlreich im Archiv recherchieren.

      MfG ChrisB

      Ja, ich will das Script schützen. Aber wenn es nun wirklich nicht geht, muss ich mich damit abfinden.
      Danke für alle Antworten!

      1. Hello,

        Ja, ich will das Script schützen. Aber wenn es nun wirklich nicht geht, muss ich mich damit abfinden.

        Wie willst Du ein Script schützen, dass im Klartext benutzt werden soll?

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          »» Ja, ich will das Script schützen. Aber wenn es nun wirklich nicht geht, muss ich mich damit abfinden.

          Wie willst Du ein Script schützen, dass im Klartext benutzt werden soll?

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          Ich möchte eigentlich nur vermeiden, dass jemand den Inhalt der Datei zu Gesicht bekommt bzw. es herunterlädt. Mein Ansatz wäre der gewesen, dass ich bei Direktzugriff auf die Hauptseite umleite. Das scheint so nicht zu funktionieren.

          1. Hello,

            bitte kein FOTU/TOFU http://de.wikipedia.org/wiki/TOFU

            Ich möchte eigentlich nur vermeiden, dass jemand den Inhalt der Datei zu Gesicht bekommt bzw. es herunterlädt. Mein Ansatz wäre der gewesen, dass ich bei Direktzugriff auf die Hauptseite umleite. Das scheint so nicht zu funktionieren.

            Du hast das Prinzip noch nicht begriffen.
            Wenn die JavaScript-Funktionen vom Client ausgeführt werden sollen, dann muss er sie auch herunterladen können. Ob der Request dafür nun direkt oder durch einen Sekundärrequest (also durch das bereitgestellte Dokument) durchgeführt wird, kann der Server nicht sicher unterscheiden.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hello,
              Du hast das Prinzip noch nicht begriffen.
              Wenn die JavaScript-Funktionen vom Client ausgeführt werden sollen, dann muss er sie auch herunterladen können. Ob der Request dafür nun direkt oder durch einen Sekundärrequest (also durch das bereitgestellte Dokument) durchgeführt wird, kann der Server nicht sicher unterscheiden.

              Du hast natürlich vollkommen recht. Ich habe das Prinzip zwar begriffen, aber leider nur 10 Meter weit gedacht. Klar muss der Client das Ding runterladen können...

              Danke!

              1. Moin!

                Du hast natürlich vollkommen recht. Ich habe das Prinzip zwar begriffen, aber leider nur 10 Meter weit gedacht. Klar muss der Client das Ding runterladen können...

                Und wenn ich sehen will, was dein Skript macht, dann wähle ich im Firebug die entsprechende Ansicht, die alle geladenen Javascripte darstellt - ohne weiteren Serverzugriff.

                Gut, dass du deinen Irrtum nicht weiter verfolgst. :)

                - Sven Rautenberg