Closed nimec01 closed 3 weeks ago
Vielleicht sollten diese Feature irgendwie festgehalten werden? Und sei es einfach durch eine Notiz in der README, die auf dieses Issue hier verlinkt.
Zur Nutzbarkeit:
Wichtig ist hierbei, dass die Response über die entsprechenden CORS Header verfügt.
Was genau heißt das für den Laien, bzw. wie kann ich das sicherstellen? Würde zum Beispiel ein Link zu GH-Pages, etwa zu Dateien wie Example01.hs
auf https://fmidue.github.io/ProPa-Slides/2024/ dieses Kriterium erfüllen?
Zur Nutzbarkeit:
Wichtig ist hierbei, dass die Response über die entsprechenden CORS Header verfügt.
Was genau heißt das für den Laien, bzw. wie kann ich das sicherstellen? Würde zum Beispiel ein Link zu GH-Pages, etwa zu Dateien wie
Example01.hs
auf https://fmidue.github.io/ProPa-Slides/2024/ dieses Kriterium erfüllen?
Es ist schwer, hier eine generelle Aussage zu tätigen. Ob die entsprechenden Header gesetzt sind, ist vom jeweiligen Server-Admin abhängig, da der notwendige Header (Access-Control-Allow-Origin
) nicht standardmäßig gesetzt wird.
Spontan fallen mir folgende Möglichkeiten ein, dies zu überprüfen:
Network
-Tab der Developer Tools die Response-Header überprüfen
Hier sieht man z. B., dass es möglich wäre von jeder Domain aus (Access-Control-Allow-Origin: *
) eine cross-origin Anfrage an einen Gist zu stellen. Wenn man stattdessen auf https://code.world geht, sieht man, dass der Header fehlt.fetch('<url>')
ausführen. Falls dann ein Fehler der Art "Access to fetch at [...] has been blocked by CORS policy [...]" auftritt, wissen wir, dass eine cross-origin Anfrage an Würde zum Beispiel ein Link zu GH-Pages, etwa zu Dateien wie
Example01.hs
auf https://fmidue.github.io/ProPa-Slides/2024/ dieses Kriterium erfüllen?
Ja, das klappt. Hier mal mit Methode 2 getestet:
Fügt zwei Optionen hinzu, um Code aus einer Quelle zu laden:
Es ist nun möglich über den searchParameter
loadSrc
eine URL anzugeben, von der Code vorab zu laden ist. Wichtig ist hierbei, dass die Response über die entsprechenden CORS Header verfügt. Andernfalls ist ein Vorabladen nicht möglich. Die Idee ist hier z. B. ein Template als Gist hochzuladen und dies dann mit dem seachParameter vorab zuladen. Das könnte dann so aussehen:Es ist jetzt möglich, Code über eine POST Request an
/haskell
vorabzuladen. Die Payload (alsmultipart/form-data
encoded) muss hierbei über das Feldsource
verfügen. Vorgesehen ist dafür die Nutzung eines<form>
Elements, sodass der Nutzer am Ende auch auf/haskell
landet (eine alleinstehende Request würde auch keinen Sinn ergeben). Dies erlaubt es z.B. eine Abgabe aus Autotool direkt zu CodeWorld zu posten.Der Hintergrund für diese Änderung ist hier zu finden: autotool-dev#6