Skip to content

Optionen um Code vorabzuladen#17

Merged
marcellussiegburg merged 2 commits intofmidue:fmiduefrom
nimec01:load-code-from-other-sources
Oct 18, 2024
Merged

Optionen um Code vorabzuladen#17
marcellussiegburg merged 2 commits intofmidue:fmiduefrom
nimec01:load-code-from-other-sources

Conversation

@nimec01
Copy link
Copy Markdown
Collaborator

@nimec01 nimec01 commented Oct 17, 2024

Fügt zwei Optionen hinzu, um Code aus einer Quelle zu laden:

  1. Vorabladen von Code via searchParameter

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:

https://autotool.fmi.uni-due.de/haskell?loadSrc=https://gist.github.com/...
  1. Vorabladen von Code via POST Request

Es ist jetzt möglich, Code über eine POST Request an /haskell vorabzuladen. Die Payload (als multipart/form-data encoded) muss hierbei über das Feld source 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

@marcellussiegburg marcellussiegburg merged commit d2305a7 into fmidue:fmidue Oct 18, 2024
@jvoigtlaender
Copy link
Copy Markdown
Member

Vielleicht sollten diese Feature irgendwie festgehalten werden? Und sei es einfach durch eine Notiz in der README, die auf dieses Issue hier verlinkt.

@jvoigtlaender
Copy link
Copy Markdown
Member

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?

@nimec01
Copy link
Copy Markdown
Collaborator Author

nimec01 commented Oct 22, 2024

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:

  1. Seite aufrufen und im Network-Tab der Developer Tools die Response-Header überprüfen
    image
    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.
  2. Ausprobieren
    Neuen Tab öffnen, in die Entwickler-Konsole gehen und 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 nicht möglich ist.
    image

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:
image

@nimec01 nimec01 deleted the load-code-from-other-sources branch March 20, 2025 17:53
@jvoigtlaender jvoigtlaender mentioned this pull request Apr 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants