Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optionen um Code vorabzuladen #17

Merged
merged 2 commits into from
Oct 18, 2024

Conversation

nimec01
Copy link
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
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
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
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

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