Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird das Protokoll für die Integration von Erst- und Drittanbieteranwendungen in das Windows Snipping Tool mithilfe des Schemas ms-screenclip: URI (Uniform Resource Identifier) angegeben. Das Protokoll unterstützt die Aufnahme von Bildern und Videos (mit Audio) über das Snipping Tool, und App-Aufrufer können auswählen, welche Snipping Tool-Features ihre App anzeigt.
Important
Dieses Protokoll erfordert eine packaged Windows App (MSIX). Wenn Ihre App verpackt ist, stellt das Betriebssystem die Identität Ihrer App automatisch dem Snipping Tool bereit, das es verwendet, um die Aufnahmeantwort sicher an Ihre App weiterzuleiten. Nicht verpackte (Win32)-Aufrufer können keine Antworten über redirect-uri erhalten. Wenn eine entpackte App eine redirect-uri Komponente bereitstellt, liefert das Snipping Tool die Antwort nicht und kann möglicherweise beendet werden, ohne die Aufnahme-UI anzuzeigen.
Note
Dieses Protokoll ersetzt die im Startbildschirm-Ausschnitt (veraltet) dokumentierte Erfahrung, die jetzt veraltet ist.
Unterstützte Funktionen
Das Snipping Tool-Protokoll unterstützt die folgenden Features:
- Rechteckaufnahme
- Freiform-Erfassung
- Fenstererfassung
- Bildschirmaufzeichnung
- Anpassen der verfügbaren Aufnahmemodi
- Automatisches Speichern (optional)
Protokollspezifikation
URI-Format:ms-screenclip://{host}/{path}?{query parameters}
| Bestandteil | Description | Werte |
|---|---|---|
| Scheme | Das benutzerdefinierte Schema für das Snipping Tool | ms-screenclip |
| Host | Der auszuführende Snipping Tool-Vorgang |
capture oder discover |
| Pfad | Der zu erfassende Medientyp (gilt nur für den capture Host; der discover Host hat keinen Pfad) |
/image oder /video |
| Abfrage | Parameter für den Vorgang | Siehe Tabellen unten |
Note
Pfade und Abfrageparameternamen sind nicht case-sensitiv. Verhält sich z. B. ms-screenclip://capture/Image?Redirect-Uri=my-app://response wie ms-screenclip://capture/image?redirect-uri=my-app://response.
Aufnahmehost
Verwenden Sie den capture Host, um die Aufnahmeüberlagerung des Snipping Tools zu starten.
Pfad
| Pfad | Description |
|---|---|
/image |
Startet die Bildaufnahme (Screenshot). Erfordert einen Modusparameter. |
/video |
Startet die Videoaufnahme (Bildschirmaufzeichnung). Verwendet immer den Rechteckmodus. |
Modusparameter (Aufnahme/Bild)
Für den /image Pfad müssen Sie genau einen Modusparameter angeben. Modusparameter sind bare Abfrageparameter ohne Wert.
| Parameter | Description |
|---|---|
rectangle |
Interaktiver Aufnahmemodus für Rechtecke. |
freeform |
Interaktiver Freihand-Aufnahmemodus. |
window |
Interaktiver Fensteraufnahmemodus. |
Important
Modusparameter müssen ohne Einen Wert angegeben werden. Verwenden Sie z. B. &rectangle, nicht&rectangle=value. Die Angabe eines Werts führt zu einer Fehlerantwort.
Für /image" müssen Sie genau einen Modusparameter angeben. Das Angeben von Null oder mehr als einem Modus führt zu einer 400 Bad Request Fehlerantwort. Für /video, wird jeder Modusparameter ignoriert.
Abfrageparameter (Erfassung)
Note
Abfrageparameter können in beliebiger Reihenfolge bereitgestellt werden.
| Parameter | Typ | Erforderlich | Description | Vorgabe |
|---|---|---|---|---|
redirect-uri |
URI | Yes | Callback-URI, an die das Snipping Tool die Aufnahmeantwort sendet. Ihre App muss einen Protokollhandler für dieses URI-Schema registrieren. Wenn sie weggelassen wird, zeigt das Snipping Tool die Aufnahme-UI nicht an und gibt keine Antwort zurück. | n/a |
user-agent |
Schnur | Nein (dringend empfohlen) | Bezeichner für die aufrufende Anwendung, die für die Protokollierung und Analyse verwendet wird. Zur Diagnose von Problemen über Supportkanäle erforderlich; das Auslassen erfolgt auf eigenes Risiko. | n/a |
api-version |
Schnur | No | Zu verwendende Protokollversion, z. B "1.2". . Wenn sie weggelassen wird, wird die Anforderung als Version 1.2verarbeitet. |
1.2 |
x-request-correlation-id |
Schnur | No | Eindeutiger Bezeichner für die Anforderung, der den Verweis auf eine bestimmte Transaktion oder Ereigniskette zulässt. | Automatisch generierte GUID |
enabledModes |
Zeichenfolge (Liste) | No | Steuert die in der Benutzeroberfläche verfügbaren Aufnahmemodi. Siehe "EnabledModes " weiter unten. | Nur der im URI angegebene Modus |
auto-save |
Flagge | No | Bei der Präsentation wird der aufgenommene Screenshot oder die Aufzeichnung automatisch auf dem Gerät des Benutzers gespeichert. | Nicht vorhanden (kein automatisches Speichern) |
Note
Der Standardwert von api-version bei 1.2 ändert sich nicht, wenn neuere Protokollversionen veröffentlicht werden. Anforderungen, die api-version nicht enthalten, werden immer als 1.2 verarbeitet. Um Funktionen zu nutzen, die in einer späteren Version hinzugefügt wurden, setzen Sie api-version auf diese Version. Es wird empfohlen, in jeder Anforderung explizit anzugeben api-version , damit Ihre App nicht mit der impliziten Standardeinstellung, sondern mit einer bekannten Protokollversion verknüpft bleibt.
Note
Wenn Sie angeben api-version, muss sie genau mit einem der Werte im Array der /discover Antwort supportedVersions übereinstimmen (derzeit 1.0, 1.1und 1.2). Alle anderen Werte, einschließlich Zwischenwerte wie 1.15 oder falsch formatierte Werte wie 1.0abc, führen zu einer 400 Bad Request-Antwort. Rufen Sie den Discover-Host auf, um die Versionsreihe zu ermitteln, die von einem bestimmten Snipping Tool-Build akzeptiert wird.
Note
Das auto-save Kennzeichen respektiert die Snipping Tool-Einstellungen des Benutzers. Wenn der Benutzer das automatische Speichern im Snipping Tool deaktiviert hat, wird die Erfassung nicht auf dem Gerät gespeichert, auch wenn Ihre Anforderung enthält auto-save.
Host entdecken
Verwenden Sie den discover Host, um die unterstützten Funktionen, Modi und Protokollversion des Snipping Tools zur Laufzeit abzufragen. Dies ist nützlich, um die Kompatibilität zu überprüfen, bevor Sie eine Aufnahmeanforderung vornehmen.
Abfrageparameter (Entdecken)
| Parameter | Typ | Erforderlich | Description | Vorgabe |
|---|---|---|---|---|
redirect-uri |
URI | Yes | Rückruf-URI, bei dem das Snipping Tool die Antwort zu den Funktionalitäten sendet. Ihre App muss einen Protokollhandler für dieses URI-Schema registrieren. Wenn nicht angegeben, gibt das Snipping Tool keine Antwort zurück. | n/a |
user-agent |
Schnur | Nein (dringend empfohlen) | Bezeichner für die aufrufende Anwendung, die für die Protokollierung und Analyse verwendet wird. | n/a |
x-request-correlation-id |
Schnur | No | Eindeutiger Bezeichner für die Anforderung. | Automatisch generierte GUID |
Entdecken Sie Beispiel
ms-screenclip://discover?user-agent=MyApp&redirect-uri=my-app://response
Antwortformat entdecken
Die Antwort ist ein JSON-Objekt, das als Abfrageparameter an den Umleitungs-URI discover angefügt wird. Sie enthält folgende Elemente:
-
version: Neueste Protokollversion, die dieser Snipping-Tool-Build unterstützt. -
defaultVersion: Protokollversion wird angenommen, wenn eine Anforderungapi-versionauslässt. Lesen Sie dies, um zu verstehen, wie Ihre losgelösten Anforderungen interpretiert werden. -
supportedVersions: Array von Protokollversionen, die von diesem Snipping-Tool akzeptiert werden. -
capabilities: Array der unterstützten Erfassungsvorgänge, jeweils mit:-
path: Der Aufnahmeendpunkt (z. B.capture/image,capture/video). -
methods: Unterstützte HTTP-ähnliche Methoden. -
parameters: Verfügbare Parameter für den Endpunkt. -
description: Beschreibung der Funktion.
-
{
"version": 1.2,
"defaultVersion": 1.2,
"supportedVersions": [1.0, 1.1, 1.2],
"capabilities": [
{
"path": "capture/image",
"methods": ["GET"],
"parameters": ["rectangle", "freeform", "window"],
"description": "Captures an image with options for shape."
},
{
"path": "capture/video",
"methods": ["GET"],
"parameters": [],
"description": "Captures a video in a defined area."
}
]
}
Aktivierte Modi
Mit dem enabledModes Parameter können Sie steuern, welche Aufnahmemodi in der Benutzeroberfläche des Snipping-Tools verfügbar sind. Verwenden Sie sie, um die Auswahlmöglichkeiten des Benutzers einzuschränken oder zu erweitern, um den Anforderungen Ihrer Anwendung zu entsprechen.
Unterstützte Modi
| Modus | Description |
|---|---|
RectangleSnip |
Rechteck-Aufnahmemodus. |
WindowSnip |
Fensteraufnahmemodus. |
FreeformSnip |
Freiform-Aufnahmemodus |
FullscreenSnip |
Vollbild-Aufnahmemodus. |
SnippingAllModes |
Alle Bildaufnahmemodi: RectangleSnip, WindowSnip, FreeformSnip, . FullscreenSnip |
RectangleRecord |
Aufzeichnungsmodus für Rechtecke. |
RecordAllModes |
Alle Aufzeichnungsmodi: derzeit RectangleRecord nur. |
All |
Alle unterstützten Modi: die Vereinigung von SnippingAllModes und RecordAllModes. |
Tip
All, SnippingAllModesund RecordAllModes sind Aggregatwerte. Die darin enthaltenen Modi können sich in allen Snipping Tool-Versionen ändern. Eine App, die einen dieser Werte verwendet, verwendet automatisch Modi, die in zukünftigen Versionen hinzugefügt werden. Um den Satz verfügbarer Modi über Updates hinweg beizubehalten, listen Sie die spezifischen Modi explizit auf (z. B RectangleSnip,FreeformSnip. ).
Important
- Für
/imageist ein Modusparameter (z. B.rectangle,freeform,window) im URI erforderlich, auch wennenabledModesangegeben ist. Der Modusparameter bestimmt den anfänglich ausgewählten Modus. - Der im URI angegebene Modus ist immer in der Benutzeroberfläche verfügbar, auch wenn er in
enabledModesnicht aufgeführt ist. Bietet?freeform&enabledModes=RectangleSnipsowohl Freihandschnitt (vom URI) als auch Rechteck-Snip an, wobei der Freihandschnitt bereits vorausgewählt ist. - Wenn
enabledModesweggelassen wird, steht nur der im URI angegebene Modus in der Benutzeroberfläche zur Verfügung. - Bei
/image, wenn kein Modus angegeben wird, ist die Anforderung ungültig und führt unabhängig vonenabledModeszu einem Fehler.
EnabledModes-Beispiele
Nur Rechteck-Ausschnitt aktivieren:
ms-screenclip://capture/image?rectangle&enabledModes=RectangleSnip&user-agent=MyApp&redirect-uri=my-app://response
Aktivieren Sie Rechteck- und Fensterausschneiden:
ms-screenclip://capture/image?rectangle&enabledModes=RectangleSnip,WindowSnip&user-agent=MyApp&redirect-uri=my-app://response
Aktivieren Sie alle Snipping-Modi:
ms-screenclip://capture/image?rectangle&enabledModes=SnippingAllModes&user-agent=MyApp&redirect-uri=my-app://response
Nur Aufzeichnungsmodus aktivieren:
ms-screenclip://capture/video?enabledModes=RecordAllModes&user-agent=MyApp&redirect-uri=my-app://response
Aktivieren sie mehrere Snipping- und Aufzeichnungsmodi:
ms-screenclip://capture/image?freeform&enabledModes=RectangleSnip,RectangleRecord&user-agent=MyApp&redirect-uri=my-app://response
Da die Freihandform im URI angegeben ist, wird sie automatisch vorausgewählt. Benutzer können zwischen Freihandform, Rechteckschnappschuss und Rechteckaufnahme wechseln.
Antworten
Nachdem der Benutzer einen Ausschnitt erstellt oder abgebrochen hat, sendet das Snipping Tool eine Antwort über die redirect-uri an Ihre Anwendung. Die Antwort ist als URI-Abfrageparameter strukturiert, die an den Umleitungs-URI angefügt werden.
Wenn Ihre redirect-uri bereits Abfrageparameter enthalten (z. B. my-app://response?sessionId=abc), werden diese Parameter beibehalten, und die Antwortparameter werden mit & angefügt. Sie können dies verwenden, um den anruferspezifischen Zustand über den Rückruf abzurunden – der Wert sessionId=abc wird zusammen mit code, reason, , x-request-correlation-idund (für eine erfolgreiche Aufnahme) file-access-tokenin den Antwort-URI zurückgerufen.
Antwortparameter
| Parameter | Typ | Anzahl | Description |
|---|---|---|---|
code |
int | Immer | STATUScode im HTTP-Stil, der das Ergebnis angibt. |
reason |
Schnur | Immer | Menschenlesbare Beschreibung des Ergebnisses. |
x-request-correlation-id |
Schnur | Immer | Die Korrelations-ID aus der ursprünglichen Anforderung (oder eine automatisch generierte). |
file-access-token |
Schnur | Nur Erfolg | Ein SharedStorageAccessManager Token, das die erfassten Medien darstellt. Verwenden Sie diese, um die Datei abzurufen. |
discover |
Schnur | Nur entdecken | URL-codierter JSON-Code, der die Antwort auf die Funktionen enthält. |
Statuscodes
| Code | Grund | Description |
|---|---|---|
| 200 | Success | Die Erfassung wurde erfolgreich abgeschlossen. Ein file-access-token ist in der Antwort enthalten. |
| 400 | Ungültige Anforderung – Ungültige oder fehlende Parameter | Die Anforderung konnte nicht verarbeitet werden. Überprüfen Sie, ob alle erforderlichen Parameter vorhanden und gültig sind. |
| 408 | Anforderungstimeout – Vorgang dauerte zu lange | Die Ausführung des Vorgangs wurde wegen Zeitüberschreitung vor Abschluss abgebrochen. |
| 499 | Anfrage von Client geschlossen - Benutzer hat das Snippet abgebrochen | Der Benutzer hat die Aufzeichnung abgebrochen, indem er die Escape-Taste drückt oder wegklickt. Gilt nur für /image und /video. |
| 500 | Interner Serverfehler – Fehler bei der Verarbeitung | Unerwarteter Fehler während der Erfassung. |
Beispielantworten
Erfolgreiche Erfassung:
my-app://response?code=200&reason=Success&x-request-correlation-id=aaaa0000-bb11-2222-33cc-444444dddddd&file-access-token=cccc2222-dd33-4444-55ee-666666ffffff
Benutzerabbruch:
my-app://response?code=499&reason=Client%20Closed%20Request%20-%20User%20Cancelled%20the%20Snip&x-request-correlation-id=bbbb1111-cc22-3333-44dd-555555eeeeee
Ungültige Anforderung (fehlender Modusparameter):
my-app://response?code=400&reason=Bad%20Request%20-%20Invalid%20or%20Missing%20Parameters&x-request-correlation-id=bbbb1111-cc22-3333-44dd-555555eeeeee
Vollständige URI-Beispiele
| Anwendungsfall | URI | Description |
|---|---|---|
| Rechteckiger Screenshot | ms-screenclip://capture/image?rectangle&user-agent=MyApp&redirect-uri=my-app://response |
Interaktive Rechteckaufnahme. Resultat wird an den Aufrufer zurückgegeben. |
| Freiform-Bildschirmfoto | ms-screenclip://capture/image?freeform&user-agent=MyApp&redirect-uri=my-app://response |
Interaktive Freiformerfassung. Ergebnis wurde an den Aufrufer zurückgegeben. |
| Screenshot des Fensters | ms-screenclip://capture/image?window&user-agent=MyApp&redirect-uri=my-app://response |
Interaktive Fenstererfassung. Ergebnis an den Aufrufer zurückgegeben. |
| Bildschirmaufzeichnung | ms-screenclip://capture/video?user-agent=MyApp&redirect-uri=my-app://response |
Interaktive Bildschirmaufzeichnung. Ergebnis wird an den Aufrufer zurückgegeben. |
| Entdecken von Funktionen | ms-screenclip://discover?user-agent=MyApp&redirect-uri=my-app://response |
Abfrage unterstützter Features. Der JSON-Code der Funktionen, der an den Aufrufer zurückgegeben wird. |
| Rechteck mit automatischer Speicherung | ms-screenclip://capture/image?rectangle&auto-save&user-agent=MyApp&redirect-uri=my-app://response |
Rechteckaufnahme mit aktivierter automatischer Speicherung. |
| Rechteck mit allen Modi | ms-screenclip://capture/image?rectangle&enabledModes=All&user-agent=MyApp&redirect-uri=my-app://response |
Die Rechteckaufnahme ist vorgewählt, alle Modi sind in der Benutzeroberfläche verfügbar. |
Starten von Ihrer App
Sie müssen Launcher.LaunchUriAsync verwenden, um das Snipping Tool aus Ihrer verpackten App zu starten. Andere Startmethoden (wie Process.Start oder Shellausführung) verleihen Ihrer App keine Identität, und das Snipping Tool übermittelt die Antwort nicht.
Schritt 1: Registrieren eines Protokollhandlers
Registrieren Sie ein benutzerdefiniertes Protokoll in Ihrer Package.appxmanifest App, damit Ihre App die Rückrufantwort empfangen kann. Der Protokollname muss mit dem in Ihrer redirect-uriDatei verwendeten Schema übereinstimmen.
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="my-app" DesiredView="default">
<uap:DisplayName>My App Protocol</uap:DisplayName>
</uap:Protocol>
</uap:Extension>
</Extensions>
Weitere Informationen zum Registrieren und Behandeln von Protokollaktivierungen finden Sie unter Behandeln der URI-Aktivierung .
Schritt 2: Starten des Snipping-Tools
// Capture a screenshot in rectangle mode
var uri = new Uri(
"ms-screenclip://capture/image"
+ "?rectangle"
+ "&user-agent=MyApp"
+ "&redirect-uri=my-app://capture-response"
+ "&x-request-correlation-id=" + Guid.NewGuid().ToString()
);
await Launcher.LaunchUriAsync(uri);
// Record a video
var uri = new Uri(
"ms-screenclip://capture/video"
+ "?user-agent=MyApp"
+ "&redirect-uri=my-app://capture-response"
);
await Launcher.LaunchUriAsync(uri);
// Discover capabilities (returns immediately, no capture UI)
var uri = new Uri(
"ms-screenclip://discover"
+ "?user-agent=MyApp"
+ "&redirect-uri=my-app://discover-response"
);
await Launcher.LaunchUriAsync(uri);
Schritt 3: Verarbeiten der Antwort
Wenn die Erfassung abgeschlossen ist (oder der Benutzer abbricht), aktiviert das Snipping Tool Ihre App über redirect-uri, indem Ergebnisparameter als Abfragezeichenfolgen angefügt werden. Die meisten Integrationen laufen bereits, wenn die Antwort eingeht – das Snipping Tool wurde aufgerufen und hat dann auf den Callback gewartet –, sodass Ihre App sowohl die Kaltstartaktivierung (die App war nicht ausgeführt) als auch die warme Reaktivierung (die App läuft bereits) verarbeiten muss. Abonnieren Sie beide Pfade in App.xaml.cs.
Behandeln einer Aufnahmeantwort (Bild oder Video):
// In App.xaml.cs: handle protocol activation for both cold-start and warm re-activation
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
// Cold-start path: the app was launched by Snipping Tool's callback.
var activatedArgs = Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().GetActivatedEventArgs();
if (activatedArgs.Kind == Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Protocol)
{
if (activatedArgs.Data is Windows.ApplicationModel.Activation.IProtocolActivatedEventArgs protocolArgs)
{
_ = HandleProtocolActivationAsync(protocolArgs.Uri);
}
}
// Warm re-activation path: the app is already running when the callback arrives.
Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().Activated += (sender, e) =>
{
if (e.Kind == Microsoft.Windows.AppLifecycle.ExtendedActivationKind.Protocol &&
e.Data is Windows.ApplicationModel.Activation.IProtocolActivatedEventArgs protocolArgs)
{
_ = HandleProtocolActivationAsync(protocolArgs.Uri);
}
};
}
private async Task HandleProtocolActivationAsync(Uri uri)
{
var query = new WwwFormUrlDecoder(uri.Query);
var code = query.GetFirstValueByName("code");
var reason = query.GetFirstValueByName("reason");
if (code == "200")
{
var token = query.GetFirstValueByName("file-access-token");
var file = await SharedStorageAccessManager.RedeemTokenForFileAsync(token);
// Use the captured file (see "Retrieving captured media" below)
}
else
{
// Handle error (400, 408, 499, 500)
Debug.WriteLine($"Snipping Tool returned {code}: {reason}");
}
}
Verarbeiten einer Entdeckungsantwort:
private void HandleDiscoverResponse(Uri uri)
{
var query = new WwwFormUrlDecoder(uri.Query);
var code = query.GetFirstValueByName("code");
if (code == "200")
{
var discover = query.GetFirstValueByName("discover");
// discover contains a URL-encoded JSON capabilities payload
var capabilities = Uri.UnescapeDataString(discover);
// Parse the JSON to inspect supported capture modes
}
}
Tip
Wenn Sie eine x-request-correlation-id Nachricht mit der Anforderung gesendet haben, überprüfen Sie, ob die Antwort denselben Wert angibt, damit Sie mit der Antwort auf die richtige In-Flight-Anforderung übereinstimmen können. Wenn Sie das Snipping Tool automatisch generieren lassen, trägt die Antwort den generierten Wert – behandeln Sie ihn als übereinstimmende In-Flight-Anforderung.
Abrufen erfasster Medien mithilfe des Tokens
Verwenden Sie die SharedStorageAccessManager-Klasse , um die file-access-token erfasste Datei einzulösen und darauf zuzugreifen.
Tokeneinschränkungen:
- Ein Token kann nur einmal eingelöst werden. Nach der Einlösung ist sie nicht mehr gültig.
- Ein Token läuft nach 14 Tagen ab.
- Eine App darf nicht über mehr als 1000 aktive Token verfügen. Nachdem ein Token eingelöst, entfernt oder abläuft, zählt es nicht mehr für das Kontingent.
// Redeem the token and display the captured image
var file = await SharedStorageAccessManager.RedeemTokenForFileAsync(token);
using (var stream = await file.OpenReadAsync())
{
var bitmap = new BitmapImage();
await bitmap.SetSourceAsync(stream);
MyImage.Source = bitmap;
}
// Or copy to your app's local storage
var localFolder = ApplicationData.Current.LocalFolder;
await file.CopyAsync(localFolder, file.Name, NameCollisionOption.GenerateUniqueName);
Sicherheitsaspekte
Das Snipping Tool überprüft alle redirect-uri Werte, bevor sie gestartet werden. Die folgenden Schutzmaßnahmen werden erzwungen:
- Packaged-App-Aufrufer: Wenn Ihre App eine verpackte Windows App (MSIX) ist, leitet das Betriebssystem die Aufnahmeantwort sicher an Ihre App weiter und stellt sicher, dass ihre App sie empfangen kann. Dies ist der empfohlene Integrationspfad.
- Eingabeüberprüfung: Das Snipping Tool lehnt Umleitungs-URIs ab, die UNC-Pfade, führende/nachfolgende Leerzeichen oder Steuerzeichen enthalten.
-
Keine Fragmente: Umleitungs-URIs, die ein URL-Fragment enthalten (z. B
my-app://response#section. ) werden abgelehnt. Das Snipping Tool fügt die Antwortparameter als Abfragezeichenfolge an, und ein Fragment verschluckt sie. - Selbstverweisender Schutz: Umleitungs-URIs, die eine rekursive Aktivierung des Snipping-Tools verursachen würden, werden blockiert.
Important
Für Anrufanwendungen:
- Registrieren Sie einen Protokollhandler für Ihr Umleitungs-URI-Schema, damit Ihre App die Antwort empfangen kann.
- Überprüfen und sanitieren Sie alle parameter, die in der Antwort empfangen wurden, bevor Sie sie verarbeiten.
- Stellen Sie sicher, dass die Antwort
x-request-correlation-idIhrer In-Flight-Anforderung entspricht, um die Behandlung einer veralteten Antwort oder das Mischen gleichzeitiger Anforderungen zu vermeiden. Korrelationskennung verhindert Vermischungen; Sie stellt keine Token-Provenienz fest – sicheres Tokenrouting stammt aus dem Rückrufkanal in der verpackten Anwendung.
Verwandte Inhalte
Windows developer