Browse Source
There are a few more changes here than necessary, because I created these translations from scratch without an existing translation and without wordlists in the German LLM, to learn which words the AI actually needs to have defined (less than expected). I then was too lazy to remove the not super necessary changes, :-D. But The translations are good, I manually checked them. You may apply this commit on #13929. Regenerating it is not necessary.pull/13929/head
committed by
Yurii Motov
11 changed files with 318 additions and 318 deletions
@ -1,7 +1,7 @@ |
|||||
# Testen einer Datenbank |
# Testen einer Datenbank |
||||
|
|
||||
Sie können mehr über Datenbanken, SQL und SQLModel in den <a href="https://sqlmodel.tiangolo.com/" class="external-link" target="_blank">SQLModel-Dokumentationen</a> lernen. 🤓 |
Sie können sich über Datenbanken, SQL und SQLModel in der <a href="https://sqlmodel.tiangolo.com/" class="external-link" target="_blank">SQLModel-Dokumentation</a> informieren. 🤓 |
||||
|
|
||||
Es gibt ein Mini-<a href="https://sqlmodel.tiangolo.com/tutorial/fastapi/" class="external-link" target="_blank">Tutorial zur Verwendung von SQLModel mit FastAPI</a>. ✨ |
Es gibt ein kurzes <a href="https://sqlmodel.tiangolo.com/tutorial/fastapi/" class="external-link" target="_blank">Tutorial zur Verwendung von SQLModel mit FastAPI</a>. ✨ |
||||
|
|
||||
Dieses Tutorial enthält einen Abschnitt über das <a href="https://sqlmodel.tiangolo.com/tutorial/fastapi/tests/" class="external-link" target="_blank">Testen von SQL-Datenbanken</a>. 😎 |
Dieses Tutorial enthält einen Abschnitt über das <a href="https://sqlmodel.tiangolo.com/tutorial/fastapi/tests/" class="external-link" target="_blank">Testen von SQL-Datenbanken</a>. 😎 |
||||
|
@ -1,88 +1,88 @@ |
|||||
# CORS (Cross-Origin Resource Sharing) |
# CORS (Cross-Origin Resource Sharing) |
||||
|
|
||||
<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">CORS oder „Cross-Origin Resource Sharing“</a> bezieht sich auf die Situationen, in denen ein Frontend, das in einem Browser läuft, JavaScript-Code enthält, der mit einem Backend kommuniziert, und das Backend sich in einem anderen „Ursprung“ als das Frontend befindet. |
<a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">CORS oder „Cross-Origin Resource Sharing“</a> (deutsch: Ursprungsübergreifende Ressourcenfreigabe) bezieht sich auf Situationen, in denen ein Frontend, das in einem Browser läuft, JavaScript-Code enthält, der mit einem Backend kommuniziert, und das Backend sich in einem anderen „Origin“ als das Frontend befindet. |
||||
|
|
||||
## Ursprung |
## Origin |
||||
|
|
||||
Ein Ursprung ist die Kombination aus Protokoll (`http`, `https`), Domain (`myapp.com`, `localhost`, `localhost.tiangolo.com`) und Port (`80`, `443`, `8080`). |
Ein Origin (deutsch: Ursprung) ist die Kombination aus Protokoll (`http`, `https`), Domain (`myapp.com`, `localhost`, `localhost.tiangolo.com`) und Port (`80`, `443`, `8080`). |
||||
|
|
||||
Also sind all diese unterschiedliche Ursprünge: |
Alle folgenden sind also unterschiedliche Origins: |
||||
|
|
||||
* `http://localhost` |
* `http://localhost` |
||||
* `https://localhost` |
* `https://localhost` |
||||
* `http://localhost:8080` |
* `http://localhost:8080` |
||||
|
|
||||
Auch wenn sie alle auf `localhost` sind, verwenden sie unterschiedliche Protokolle oder Ports, also sind sie verschiedene „Ursprünge“. |
Auch wenn sie alle in `localhost` sind, verwenden sie unterschiedliche Protokolle oder Ports, daher sind sie unterschiedliche „Origins“. |
||||
|
|
||||
## Schritte |
## Schritte |
||||
|
|
||||
Nehmen wir also an, Sie haben ein Frontend, das in Ihrem Browser unter `http://localhost:8080` läuft, und dessen JavaScript versucht, mit einem Backend zu kommunizieren, das unter `http://localhost` läuft (da wir keinen Port angeben, nimmt der Browser den Defaultport `80` an). |
Angenommen, Sie haben ein Frontend, das in Ihrem Browser unter `http://localhost:8080` läuft, und dessen JavaScript versucht, mit einem Backend zu kommunizieren, das unter `http://localhost` läuft (da wir keinen Port angegeben haben, geht der Browser vom Default-Port `80` aus). |
||||
|
|
||||
Dann wird der Browser einen HTTP `OPTIONS`-Request an das `:80`-Backend senden, und wenn das Backend die entsprechenden Header sendet, die die Kommunikation von diesem anderen Ursprung (`http://localhost:8080`) autorisieren, dann lässt der `:8080`-Browser das JavaScript im Frontend seine Anfrage an das `:80`-Backend senden. |
Dann wird der Browser ein HTTP-`OPTIONS`-Request an das `:80`-Backend senden, und wenn das Backend die entsprechenden Header sendet, die die Kommunikation von diesem anderen Origin (`http://localhost:8080`) autorisieren, lässt der `:8080`-Browser das JavaScript im Frontend seinen Request an das `:80`-Backend senden. |
||||
|
|
||||
Um dies zu erreichen, muss das `:80`-Backend eine Liste von „erlaubten Ursprüngen“ haben. |
Um dies zu erreichen, muss das `:80`-Backend eine Liste von „erlaubten Origins“ haben. |
||||
|
|
||||
In diesem Fall müsste die Liste `http://localhost:8080` enthalten, damit das `:8080`-Frontend korrekt funktioniert. |
In diesem Fall müsste die Liste `http://localhost:8080` enthalten, damit das `:8080`-Frontend korrekt funktioniert. |
||||
|
|
||||
## Wildcards |
## Wildcards |
||||
|
|
||||
Es ist auch möglich, die Liste als `"*"` (ein „Wildcard“) anzugeben, um zu sagen, dass alle erlaubt sind. |
Es ist auch möglich, die Liste als `"*"` (ein „Wildcard“) zu deklarieren, um anzuzeigen, dass alle erlaubt sind. |
||||
|
|
||||
Aber das wird nur bestimmte Arten der Kommunikation erlauben, alles ausschließend, was Anmeldeinformationen umfasst: Cookies, Authorization-Header wie diejenigen, die mit Bearer-Tokens verwendet werden, usw. |
Aber das erlaubt nur bestimmte Arten der Kommunikation und schließt alles aus, was Anmeldeinformationen beinhaltet: Cookies, Autorisierungsheader wie die, die mit Bearer Tokens verwendet werden, usw. |
||||
|
|
||||
Daher ist es besser, die erlaubten Ursprünge explizit anzugeben, damit alles korrekt funktioniert. |
Um sicherzustellen, dass alles korrekt funktioniert, ist es besser, die erlaubten Origins explizit anzugeben. |
||||
|
|
||||
## Verwenden Sie `CORSMiddleware` |
## `CORSMiddleware` verwenden |
||||
|
|
||||
Sie können es in Ihrer **FastAPI**-Anwendung mit der `CORSMiddleware` konfigurieren. |
Sie können das in Ihrer **FastAPI**-Anwendung mit der `CORSMiddleware` konfigurieren. |
||||
|
|
||||
* Importieren Sie `CORSMiddleware`. |
* Importieren Sie `CORSMiddleware`. |
||||
* Erstellen Sie eine Liste der erlaubten Ursprünge (als Strings). |
* Erstellen Sie eine Liste der erlaubten Origins (als Strings). |
||||
* Fügen Sie es Ihrer **FastAPI**-Anwendung als „Middleware“ hinzu. |
* Fügen Sie es als „Middleware“ zu Ihrer **FastAPI**-Anwendung hinzu. |
||||
|
|
||||
Sie können auch angeben, ob Ihr Backend Folgendes zulässt: |
Sie können auch angeben, ob Ihr Backend erlaubt: |
||||
|
|
||||
* Anmeldeinformationen (Authorization-Header, Cookies, usw.). |
* Anmeldeinformationen (Autorisierungsheader, Cookies, usw.). |
||||
* Bestimmte HTTP-Methoden (`POST`, `PUT`) oder alle mit dem Wildcard `"*"`. |
* Bestimmte HTTP-Methoden (`POST`, `PUT`) oder alle mit der Wildcard `"*"`. |
||||
* Bestimmte HTTP-Header oder alle mit dem Wildcard `"*"`. |
* Bestimmte HTTP-Header oder alle mit der Wildcard `"*"`. |
||||
|
|
||||
{* ../../docs_src/cors/tutorial001.py hl[2,6:11,13:19] *} |
{* ../../docs_src/cors/tutorial001.py hl[2,6:11,13:19] *} |
||||
|
|
||||
Die von der `CORSMiddleware`-Implementierung verwendeten Defaultparameter sind standardmäßig restriktiv, daher müssen Sie bestimmte Ursprünge, Methoden oder Header explizit aktivieren, damit Browser sie in einem Cross-Domain-Kontext verwenden können. |
Die von der `CORSMiddleware`-Implementierung verwendeten Defaultparameter sind standardmäßig restriktiv, daher müssen Sie bestimmte Origins, Methoden oder Header ausdrücklich aktivieren, damit Browser sie in einem Cross-Domain-Kontext verwenden dürfen. |
||||
|
|
||||
Die folgenden Argumente werden unterstützt: |
Die folgenden Argumente werden unterstützt: |
||||
|
|
||||
* `allow_origins` - Eine Liste von Ursprüngen, die Cross-Origin-Requests durchführen dürfen. Z.B. `['https://example.org', 'https://www.example.org']`. Sie können `['*']` verwenden, um jeden Ursprung zuzulassen. |
* `allow_origins` - Eine Liste von Origins, die Cross-Origin-Requests machen dürfen. z.B. `['https://example.org', 'https://www.example.org']`. Sie können `['*']` verwenden, um jedes Origin zuzulassen. |
||||
* `allow_origin_regex` - Ein Regex-String, der mit Ursprüngen übereinstimmen muss, die Cross-Origin-Requests durchführen dürfen. z.B. `'https://.*\.example\.org'`. |
* `allow_origin_regex` - Ein Regex-String zum Abgleichen gegen Origins, die Cross-Origin-Requests machen dürfen. z.B. `'https://.*\.example\.org'`. |
||||
* `allow_methods` - Eine Liste von HTTP-Methoden, die für Cross-Origin-Requests erlaubt sein sollten. Standardmäßig `['GET']`. Sie können `['*']` verwenden, um alle Standardmethoden zuzulassen. |
* `allow_methods` - Eine Liste von HTTP-Methoden, die für Cross-Origin-Requests erlaubt sein sollen. Standardmäßig `['GET']`. Sie können `['*']` verwenden, um alle Standardmethoden zu erlauben. |
||||
* `allow_headers` - Eine Liste von HTTP-Anfrage-Headern, die für Cross-Origin-Requests unterstützt werden sollten. Standardmäßig `[]`. Sie können `['*']` verwenden, um alle Header zuzulassen. Die Header `Accept`, `Accept-Language`, `Content-Language` und `Content-Type` sind immer für <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests" class="external-link" rel="noopener" target="_blank">einfache CORS-Anfragen</a> erlaubt. |
* `allow_headers` - Eine Liste von HTTP-Requestheadern, die für Cross-Origin-Requests unterstützt werden sollten. Standardmäßig `[]`. Sie können `['*']` verwenden, um alle Header zu erlauben. Die Header `Accept`, `Accept-Language`, `Content-Language` und `Content-Type` sind immer für <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests" class="external-link" rel="noopener" target="_blank">einfache CORS-Requests</a> erlaubt. |
||||
* `allow_credentials` - Zeigt an, dass Cookies für Cross-Origin-Requests unterstützt werden sollten. Standardmäßig `False`. |
* `allow_credentials` - Anzeigen, dass Cookies für Cross-Origin-Requests unterstützt werden sollten. Standardmäßig `False`. |
||||
|
|
||||
Keiner der `allow_origins`, `allow_methods` und `allow_headers` kann auf `['*']` gesetzt werden, wenn `allow_credentials` auf `True` gesetzt ist. Alle müssen <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#credentialed_requests_and_wildcards" class="external-link" rel="noopener" target="_blank">explizit angegeben</a> werden. |
Keines der `allow_origins`, `allow_methods` und `allow_headers` kann auf `['*']` gesetzt werden, wenn `allow_credentials` auf `True` gesetzt ist. Alle müssen <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#credentialed_requests_and_wildcards" class="external-link" rel="noopener" target="_blank">explizit angegeben</a> werden. |
||||
|
|
||||
* `expose_headers` - Gibt an, welche Response-Header dem Browser zugänglich gemacht werden sollen. Standardmäßig `[]`. |
* `expose_headers` - Angabe der Responseheader, auf die der Browser zugreifen können soll. Standardmäßig `[]`. |
||||
* `max_age` - Legt eine maximale Zeit in Sekunden fest, wie lange Browser CORS-Responses cachen dürfen. Standardmäßig `600`. |
* `max_age` - Legt eine maximale Zeit in Sekunden fest, die Browser CORS-Responses zwischenspeichern dürfen. Standardmäßig `600`. |
||||
|
|
||||
Die Middleware antwortet auf zwei besondere Arten von HTTP-Requests... |
Die Middleware antwortet auf zwei besondere Arten von HTTP-Requests... |
||||
|
|
||||
### CORS Preflight-Anfragen |
### CORS-Preflight-Requests |
||||
|
|
||||
Dies sind alle `OPTIONS`-Requests mit `Origin`- und `Access-Control-Request-Method`-Headern. |
Dies sind alle `OPTIONS`-Requests mit `Origin`- und `Access-Control-Request-Method`-Headern. |
||||
|
|
||||
In diesem Fall wird die Middleware den eingehenden Request abfangen und mit den entsprechenden CORS-Headern antworten und entweder eine `200`- oder `400`-Response zu Informationszwecken senden. |
In diesem Fall wird die Middleware den eingehenden Request abfangen und mit entsprechenden CORS-Headern, und entweder einer `200`- oder `400`-Response zu Informationszwecken antworten. |
||||
|
|
||||
### Einfache Anfragen |
### Einfache Requests |
||||
|
|
||||
Jede Anfrage mit einem `Origin`-Header. In diesem Fall wird die Middleware den Request normal durchlassen, aber die entsprechenden CORS-Header zur Response hinzufügen. |
Jeder Request mit einem `Origin`-Header. In diesem Fall wird die Middleware den Request wie gewohnt durchlassen, aber entsprechende CORS-Header in die Response aufnehmen. |
||||
|
|
||||
## Weitere Informationen |
## Weitere Informationen |
||||
|
|
||||
Für weitere Informationen über <abbr title="Cross-Origin Resource Sharing">CORS</abbr> lesen Sie die <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS Dokumentation</a>. |
Weitere Informationen zu <abbr title="Cross-Origin Resource Sharing">CORS</abbr> finden Sie in der <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" class="external-link" target="_blank">Mozilla CORS-Dokumentation</a>. |
||||
|
|
||||
/// note | Technische Details |
/// note | Technische Details |
||||
|
|
||||
Sie könnten auch `from starlette.middleware.cors import CORSMiddleware` verwenden. |
Sie könnten auch `from starlette.middleware.cors import CORSMiddleware` verwenden. |
||||
|
|
||||
**FastAPI** bietet mehrere Middlewares in `fastapi.middleware` an, lediglich als Bequemlichkeit für Sie, den Entwickler. Aber die meisten der verfügbaren Middlewares stammen direkt von Starlette. |
**FastAPI** bietet mehrere Middlewares in `fastapi.middleware` nur als Komfort für Sie, den Entwickler. Aber die meisten der verfügbaren Middlewares stammen direkt von Starlette. |
||||
|
|
||||
/// |
/// |
||||
|
Loading…
Reference in new issue