Krautkanal.com

Veröffentlicht am 2015-09-30 12:38:47 in /prog/

/prog/ 7859: HTML-Code von externer Seite laden und parsen

shesgared Avatar
shesgared:#7859

Hallo Bernd,
ich möchte in JavaScript genau das tun, was in der Überschrift steht. Geht aber anscheinend nicht so einfach:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at URL. This can be fixed by moving the resource to the same domain or enabling CORS.
Da ich die externe Seite nicht kontrolliere, kann ich CORS nicht einschalten. Bisher habe ich eine Lösung in Python gebastelt, die die Seite lädt, lokal speichert und dann parst. Ich bin mir allerdings fast sicher, dass ich später keine Scripte im Hintergrund laufen lassen kann, sondern lediglich die fertitge Website (incl. JS) hosten muss.

Bin ich blind/zu blöd oder brauche ich irgendeinen Arbeiteherum? Ich habe bisher leider auch keine Erfahrung mit JS, die über einfache Bedienelemente hinausgeht. Wie würde Bernd das Problem lösen?

marciotoledo Avatar
marciotoledo:#7861

>>7859
>Da ich die externe Seite nicht kontrolliere, kann ich CORS nicht einschalten.

Muss CORS nicht auf der eigenen Seite angeschaltet werden?

A la:

Access-Control-Allow-Origin: http://externe-seite.de

Säge, weil nicht sicher.

cmzhang Avatar
cmzhang:#7863

Um CORS oder eine serverseitige Lösung wirst du leider nicht herumkommen.
Ersteres sollte aber eigentlich kein Problem darstellen. Selbst beim günstigsten Shared-Hosting wird man doch wohl noch an der .htaccess schrauben dürfen!

sava2500 Avatar
sava2500:#7868

Ist aus Sicherheitsgründen nur mit spezieller Einstellung möglich. Würde dir aber eine Backend-Lösung etwa in der Form empfehlen:

Request an deinen Server, dass du Seite xy geparsed haben willst. Dann die geparste Seite bzw. notwendigen Informationen zurückschicken.

saarabpreet Avatar
saarabpreet:#7870

>HTML-Code von externer Seite laden und parsen
>in JavaScript
Du kannst das HTML per Ajax anfordern und dann "parsen"(?) oder als InnerHTML von irgendwas setzen.

ultragex Avatar
ultragex:#7871

>>7870
Nein. SOP, kennste?

Drinvor: abschalten

shesgared Avatar
shesgared:#7874

Du kannst ganz oldschool was mit iframes frickeln aber am besten baust du etwas das nicht cross-domain läuft.

mhwelander Avatar
mhwelander:#7877

>>7859
Hier sind ein paar Wege, SOP zu umgehen.

http://stackoverflow.com/questions/3076414/ways-to-circumvent-the-same-origin-policy

350d Avatar
350d:#7878

>>7861
Nein. Das Sicherheitsrisiko ist: Wenn du auf deiner Seite jede beliebige ganz fremde Seite laden kannst, kannst du, was weiß ich, Gesichtsbuch einbinden und dort unter dem Account des Nutzers (über JS) Sachen schreiben – denn wenn der Browser des Nutzers Gesichtsbuch lädt, dann ist er dort ja eingeloggt! Daher muss Gesichtsbuch sagen: CORS=erlaubt.
Wenn dein Server hingegen selbst den Request schickt, dann kriegt er natürlich nicht den Login des Nutzers, also ist das kein Problem.

Noch ein Vorschlag für OP: Wie wäre es mit einem Browser-Plugin? Ich weiß ja nicht, für wen du was genau bauen willst. Aber ein Plugin, das im Browser einen Button bereitstellt, "Mit dem HTML der derzeitigen Seite das und das machen", würde vermutlich funktionieren.

_vojto Avatar
_vojto:#7879

kimonolabs.com
import.io

Könnte was für dich sein.

Neuste Fäden in diesem Brett: