Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule określono protokół integrowania aplikacji pierwszej i innej firmy z narzędziem Windows Snipping Tool przy użyciu schematu ms-screenclip: URI (uniform Resource Identifier). Protokół obsługuje przechwytywanie obrazów i wideo (z dźwiękiem) za pośrednictwem narzędzia Snipping Tool, a osoby wywołujące aplikacje mogą wybrać, które funkcje narzędzia fragmentowania będą wyświetlane przez aplikację.
Ważna
Ten protokół wymaga pakietowanej aplikacji Windows (MSIX). Po spakowaniu aplikacji system operacyjny automatycznie udostępnia tożsamość aplikacji narzędziu Snipping Tool, które używa jej do bezpiecznego przekierowania odpowiedzi na przechwytywanie z powrotem do Twojej aplikacji. Wywołania rozpakowane (Win32) nie mogą odbierać odpowiedzi za pośrednictwem metody redirect-uri. Jeśli rozpakowana aplikacja udostępnia element redirect-uri, Narzędzie Snipping nie dostarczy odpowiedzi i może zakończyć działanie bez wyświetlania interfejsu użytkownika przechwytywania.
Note
Ten protokół zastępuje doświadczenie opisane w temacie Uruchamianie zrzutu ekranu (przestarzałe).
Obsługiwane funkcje
Protokół Snipping Tool obsługuje następujące funkcje:
- Przechwytywanie prostokąta
- Przechwytywanie dowolnych kształtów
- Przechwytywanie okien
- Nagrywanie ekranu
- Dostosowywanie dostępnych trybów przechwytywania
- Automatyczne zapisywanie (opcjonalnie)
Specyfikacja protokołu
Format identyfikatora URI:ms-screenclip://{host}/{path}?{query parameters}
| Składnik | Opis | Wartości |
|---|---|---|
| Schemat | Schemat niestandardowy dla Snipping Tool | ms-screenclip |
| Host | Operacja narzędzia snipping do wykonania |
capture lub discover |
| Path | Typ nośnika do przechwycenia przez capture hosta (dotyczy wyłącznie tego hosta; discover host nie ma ścieżki) |
/image lub /video |
| Query | Parametry operacji | Zobacz tabele poniżej |
Note
Ścieżki i nazwy parametrów zapytania są niewrażliwe na wielkość liter. Na przykład ms-screenclip://capture/Image?Redirect-Uri=my-app://response zachowuje się tak samo jak ms-screenclip://capture/image?redirect-uri=my-app://response.
Serwer przechwytywania
Użyj hosta capture, aby uruchomić nakładkę przechwytywania Narzędzia do Wycinania.
Ścieżka
| Ścieżka | Opis |
|---|---|
/image |
Uruchamia przechwytywanie obrazów (zrzut ekranu). Wymaga parametru trybu. |
/video |
Uruchamia przechwytywanie wideo (nagrywanie ekranu). Zawsze używa trybu prostokąta. |
Parametry trybu (przechwytywanie/obraz)
Dla ścieżki /image należy określić dokładnie jeden parametr trybu. Parametry trybu są gołymi parametrami zapytania bez wartości.
| Parameter | Opis |
|---|---|
rectangle |
Tryb interaktywnego przechwytywania prostokąta. |
freeform |
Tryb interakcyjnego przechwytywania wolnych kształtów. |
window |
Tryb przechwytywania okna w trybie interaktywnym. |
Ważna
Parametry trybu muszą być określone bez wartości. Na przykład użyj &rectangle, a nie&rectangle=value. Podanie wartości spowoduje wystąpienie błędu.
W przypadku parametru /image należy określić dokładnie jeden parametr trybu. Określenie zera lub więcej niż jednego trybu spowoduje wyświetlenie 400 Bad Request odpowiedzi na błąd. W przypadku /video każdy parametr trybu jest ignorowany.
Parametry zapytania (przechwytywanie)
Note
Parametry zapytania mogą być podane w dowolnej kolejności.
| Parameter | Typ | Wymagania | Opis | Default |
|---|---|---|---|---|
redirect-uri |
URI | Yes | Identyfikator URI wywołania zwrotnego, w którym Narzędzie Wycinanie wysyła odpowiedź przechwytywania. Aplikacja musi zarejestrować procedurę obsługi protokołu dla tego schematu identyfikatora URI. W przypadku pominięcia Narzędzie Wycinanie nie wyświetla interfejsu przechwytywania i nie zwraca odpowiedzi. | n/a |
user-agent |
ciąg | Nie (zdecydowanie zalecane) | Identyfikator aplikacji wywołującej używany do rejestrowania i analizy. Wymagane do diagnozowania problemów za pośrednictwem kanałów pomocy technicznej; pomiń na własne ryzyko. | n/a |
api-version |
ciąg | No | Wersja protokołu do użycia, na przykład "1.2". W przypadku pominięcia żądanie jest przetwarzane jako wersja 1.2. |
1.2 |
x-request-correlation-id |
ciąg | No | Unikatowy identyfikator żądania, który umożliwia odwołanie do określonej transakcji lub łańcucha zdarzeń. | Identyfikator GUID generowany automatycznie |
enabledModes |
string (lista) | No | Kontroluje, które tryby przechwytywania są dostępne w interfejsie użytkownika. Zobacz EnabledModes poniżej. | Tylko tryb określony w adresie URI |
auto-save |
flaga | No | W chwili obecnej przechwycony zrzut ekranu lub nagranie są automatycznie zapisywane na urządzeniu użytkownika. | Brak obecności (brak automatycznego zapisywania) |
Note
Domyślna wartość api-version1.2 nie zmienia się w momencie wydania nowszych wersji protokołu. Żądania pomijane api-version są zawsze przetwarzane jako 1.2. Aby użyć funkcji dodanych w nowszej wersji, ustaw wartość api-version dla tej wersji. Zalecamy wyraźne określenie api-version w każdym żądaniu, aby aplikacja pozostała powiązana ze znaną wersją protokołu, zamiast domyślnego ustawienia implicitnego.
Note
Podając api-version, musi dokładnie pasować do jednej z wartości w tablicy /discover odpowiedzi supportedVersions (obecnie 1.0, 1.1, i 1.2). Każda inna wartość — w tym wartości pośrednie, takie jak 1.15 lub 1.0abc, lub źle sformułowane wartości — zwraca odpowiedź 400 Bad Request. Aby odnaleźć zestaw wersji akceptowanych przez określoną kompilację narzędzia Snipping Tool, wywołaj discover host.
Note
Flaga auto-save uwzględnia ustawienia narzędzia snipping użytkownika. Jeśli użytkownik wyłączył automatyczne zapisywanie w narzędziu Snipping Tool, zrzut nie jest zapisywany na urządzeniu nawet wtedy, gdy żądanie zawiera auto-save.
Odnajdywanie hosta
Użyj hosta discover, aby wykonywać zapytania dotyczące obsługiwanych możliwości, trybów i wersji protokołu narzędzia Snipping Tool w trakcie działania. Jest to przydatne do sprawdzania zgodności przed wykonaniem żądania przechwytywania.
Parametry zapytania (odnajdywanie)
| Parameter | Typ | Wymagania | Opis | Default |
|---|---|---|---|---|
redirect-uri |
URI | Yes | Identyfikator URI wywołania zwrotnego, w którym Narzędzie Wycinanie wysyła odpowiedź na funkcjonalności. Aplikacja musi zarejestrować procedurę obsługi protokołu dla tego schematu identyfikatora URI. W przypadku pominięcia Snipping Tool nie odpowiada. | n/a |
user-agent |
ciąg | Nie (zdecydowanie zalecane) | Identyfikator aplikacji wywołującej używany do rejestrowania i analizy. | n/a |
x-request-correlation-id |
ciąg | No | Unikatowy identyfikator żądania. | Identyfikator GUID generowany automatycznie |
Przykład odnajdywania
ms-screenclip://discover?user-agent=MyApp&redirect-uri=my-app://response
Odnajdywanie formatu odpowiedzi
Odpowiedź to obiekt JSON dołączony do identyfikatora URI przekierowania jako parametr zapytania discover. Zawiera:
-
version: Najnowsza wersja protokołu obsługiwana przez tę kompilację narzędzia Snipping Tool. -
defaultVersion: Wersja protokołu zakładana, gdy żądanie pomijaapi-version. Przeczytaj to, aby dowiedzieć się, jak są interpretowane nieprzypisane żądania. -
supportedVersions: Tablica wersji protokołu, które akceptuje kompilacja narzędzia Snipping Tool. -
capabilities: Tablica obsługiwanych operacji przechwytywania, z których każda ma następujące elementy:-
path: punkt końcowy przechwytywania (np.capture/image,capture/video). -
methods: obsługiwane metody podobne do protokołu HTTP. -
parameters: Dostępne parametry punktu końcowego. -
description: opis możliwości.
-
{
"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."
}
]
}
Włączone tryby
Parametr enabledModes umożliwia kontrolowanie, które tryby przechwytywania są dostępne w interfejsie użytkownika narzędzia Snipping. Służy do ograniczania lub rozszerzania opcji użytkownika, aby dopasować je do wymagań aplikacji.
Obsługiwane tryby
| Mode | Opis |
|---|---|
RectangleSnip |
Tryb przechwytywania prostokąta. |
WindowSnip |
Tryb przechwytywania okna. |
FreeformSnip |
Tryb przechwytywania dowolnego kształtu. |
FullscreenSnip |
Tryb przechwytywania pełnoekranowego. |
SnippingAllModes |
Wszystkie tryby przechwytywania obrazów: RectangleSnip, , WindowSnipFreeformSnip, FullscreenSnip. |
RectangleRecord |
Tryb nagrywania prostokąta. |
RecordAllModes |
Wszystkie tryby nagrywania: obecnie RectangleRecord tylko. |
All |
Wszystkie obsługiwane tryby: zbiorem SnippingAllModes i RecordAllModes. |
Wskazówka
All, SnippingAllModesi RecordAllModes są wartościami agregowanymi. Tryby, które są częścią narzędzia Snipping, mogą ulegać zmianom wraz z kolejnymi wersjami tego narzędzia. Aplikacja, która używa jednej z tych wartości, automatycznie pobiera tryby dodane w przyszłych wersjach. Aby zachować zestaw dostępnych trybów stałych między aktualizacjami, należy jawnie wyświetlić listę określonych trybów (na przykład RectangleSnip,FreeformSnip).
Ważna
- W przypadku
/imageparametru trybu (np.rectangle,freeform,window) jest wymagany w identyfikatorze URI, nawet jeślienabledModesjest określony. Parametr mode określa początkowo wybrany tryb. - Tryb określony w identyfikatorze URI jest zawsze dostępny w interfejsie użytkownika, nawet jeśli nie jest wymieniony na liście w
enabledModes. Na przykład?freeform&enabledModes=RectangleSnipudostępnia zarówno dowolny kształt (z identyfikatora URI), jak i prostokątny fragment z wybranym wstępnie kształtem. - Jeśli
enabledModeszostanie pominięty, w interfejsie użytkownika będzie dostępny tylko tryb określony w URI. - W przypadku
/imageparametru , jeśli nie określono parametru trybu, żądanie jest nieprawidłowe i spowoduje wystąpienie błędu niezależnie od parametruenabledModes.
Przykłady funkcji EnabledModes
Włącz tylko fragment prostokąta:
ms-screenclip://capture/image?rectangle&enabledModes=RectangleSnip&user-agent=MyApp&redirect-uri=my-app://response
Włącz prostokąt i wycinek okna:
ms-screenclip://capture/image?rectangle&enabledModes=RectangleSnip,WindowSnip&user-agent=MyApp&redirect-uri=my-app://response
Włącz wszystkie tryby fragmentowania:
ms-screenclip://capture/image?rectangle&enabledModes=SnippingAllModes&user-agent=MyApp&redirect-uri=my-app://response
Włącz tylko tryb nagrywania:
ms-screenclip://capture/video?enabledModes=RecordAllModes&user-agent=MyApp&redirect-uri=my-app://response
Włącz wiele trybów fragmentowania i nagrywania:
ms-screenclip://capture/image?freeform&enabledModes=RectangleSnip,RectangleRecord&user-agent=MyApp&redirect-uri=my-app://response
Ponieważ tryb dowolny jest określony w URI, zostanie wstępnie wybrany. Użytkownicy mogą przełączać się między wolnym kształtem, fragmentem prostokąta i rejestrowaniem prostokąta.
Responses
Po zakończeniu lub anulowaniu przechwytywania, narzędzie Snipping Tool wysyła odpowiedź z powrotem do aplikacji za pośrednictwem redirect-uri. Odpowiedź jest sformatowana jako parametry zapytania URI dołączone do Twojego identyfikatora URI przekierowania.
Jeśli redirect-uri już zawiera parametry zapytania (na przykład my-app://response?sessionId=abc), te parametry są zachowywane, a parametry odpowiedzi są dodawane z &. Można użyć tego, by przekazać stan specyficzny dla wywołującego przez wywołanie zwrotne — wartość sessionId=abc jest zwracana z powrotem w identyfikatorze URI odpowiedzi wraz z code, reason, x-request-correlation-id oraz file-access-token (po pomyślnym przechwyceniu).
Parametry odpowiedzi
| Parameter | Typ | Prezentować | Opis |
|---|---|---|---|
code |
int | Always | Kod stanu stylu HTTP wskazujący wynik. |
reason |
ciąg | Always | Czytelny dla człowieka opis wyniku. |
x-request-correlation-id |
ciąg | Always | Identyfikator korelacji z oryginalnego żądania (lub wygenerowany automatycznie). |
file-access-token |
ciąg | Tylko powodzenie | Token SharedStorageAccessManager reprezentujący przechwycony nośnik. Użyj tego, aby pobrać plik. |
discover |
ciąg | Odkryj tylko | Kod JSON zakodowany w adresie URL zawierający odpowiedź na możliwości. |
Kody stanu
| Code | Powód | Opis |
|---|---|---|
| 200 | Powodzenie | Przechwytywanie zostało ukończone pomyślnie. Element file-access-token został uwzględniony w odpowiedzi. |
| 400 | Nieprawidłowe żądanie — nieprawidłowe lub brakujące parametry | Nie można przetworzyć żądania. Sprawdź, czy wszystkie wymagane parametry są obecne i prawidłowe. |
| 408 | Limit czasu żądania — operacja trwała zbyt długo | Operacja przekroczyła limit czasu przed zakończeniem. |
| 499 | Zamknięte żądanie klienta — użytkownik anulował fragment | Użytkownik anulował przechwytywanie, naciskając klawisz Escape lub klikając poza obszarem.
/image Dotyczy tylko /image i /video. |
| 500 | Wewnętrzny błąd serwera — przetwarzanie nie powiodło się | Wystąpił nieoczekiwany błąd podczas przechwytywania. |
Przykładowe odpowiedzi
Pomyślne przechwycenie:
my-app://response?code=200&reason=Success&x-request-correlation-id=aaaa0000-bb11-2222-33cc-444444dddddd&file-access-token=cccc2222-dd33-4444-55ee-666666ffffff
Anulowano użytkownika:
my-app://response?code=499&reason=Client%20Closed%20Request%20-%20User%20Cancelled%20the%20Snip&x-request-correlation-id=bbbb1111-cc22-3333-44dd-555555eeeeee
Nieprawidłowe żądanie (brak parametru trybu):
my-app://response?code=400&reason=Bad%20Request%20-%20Invalid%20or%20Missing%20Parameters&x-request-correlation-id=bbbb1111-cc22-3333-44dd-555555eeeeee
Przykłady pełnych identyfikatorów URI
| Przypadek użycia | URI | Opis |
|---|---|---|
| Zrzut ekranu prostokąta | ms-screenclip://capture/image?rectangle&user-agent=MyApp&redirect-uri=my-app://response |
Interaktywne przechwytywanie prostokątów. Wynik zwrócony do elementu wywołującego. |
| Zrzut ekranu przedstawiający dowolny kształt | ms-screenclip://capture/image?freeform&user-agent=MyApp&redirect-uri=my-app://response |
Przechwytywanie interaktywnej wolnej formy. Wynik zwrócony do obiektu wywołującego. |
| Zrzut ekranu okna | ms-screenclip://capture/image?window&user-agent=MyApp&redirect-uri=my-app://response |
Przechwytywanie interakcyjnego okna. Wynik zwrócony do funkcji wywołującej. |
| Nagrywanie ekranu | ms-screenclip://capture/video?user-agent=MyApp&redirect-uri=my-app://response |
Interaktywne nagrywanie ekranu. Wynik zwrócony do wywołującego. |
| Odnajdywanie możliwości | ms-screenclip://discover?user-agent=MyApp&redirect-uri=my-app://response |
Wykonywanie zapytań o obsługiwane funkcje. Funkcja JSON zwróciła obiekt wywołujący. |
| Prostokąt o automatycznym zapisywaniu | ms-screenclip://capture/image?rectangle&auto-save&user-agent=MyApp&redirect-uri=my-app://response |
Zrzut prostokąta z włączonym automatycznym zapisywaniem. |
| Prostokąt ze wszystkimi trybami | ms-screenclip://capture/image?rectangle&enabledModes=All&user-agent=MyApp&redirect-uri=my-app://response |
Wstępnie wybrane przechwytywanie prostokątów, wszystkie tryby dostępne w interfejsie użytkownika. |
Uruchamianie z aplikacji
Aby uruchomić narzędzie Snipping Tool z spakowanej aplikacji, należy użyć narzędzia Launcher.LaunchUriAsync . Inne metody uruchamiania (takie jak Process.Start lub wykonanie poleceń powłoki) nie przekażą tożsamości Twojej aplikacji, a Snipping Tool nie zwróci odpowiedzi.
Krok 1: Zarejestruj obsługę protokołu
Zarejestruj niestandardowy protokół w aplikacji Package.appxmanifest , aby mogła odbierać odpowiedź zwrotną. Nazwa protokołu musi być zgodna ze schematem używanym w pliku redirect-uri.
<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>
Zobacz Obsługa aktywacji identyfikatora URI , aby uzyskać więcej informacji na temat rejestrowania i obsługi aktywacji protokołu.
Krok 2. Uruchamianie narzędzia fragmentowania
// 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);
Krok 3. Obsługa odpowiedzi
Po zakończeniu przechwytywania (lub gdy użytkownik anuluje), Narzędzie Wycinania aktywuje Twoją aplikację za pomocą redirect-uri z dołączonymi wynikowymi parametrami w postaci ciągów zapytania. Większość integracji jest już uruchomiona po nadejściu odpowiedzi — osoba wywołująca uruchomiła program Snipping Tool, a następnie czekała na wywołanie zwrotne — więc aplikacja musi obsługiwać aktywację na zimno (aplikacja nie została uruchomiona) i ponowna aktywacja na ciepło (aplikacja jest już uruchomiona). Subskrybuj obie opcje w module App.xaml.cs.
Zarządzanie odpowiedzią przechwytywania (obraz lub wideo):
// 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}");
}
}
Obsługa odpowiedzi odnajdywania:
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
}
}
Wskazówka
Jeśli wysłano żądanie z żądaniem x-request-correlation-id , sprawdź, czy odpowiedź odzwierciedla tę samą wartość, aby dopasować odpowiedź do poprawnego żądania w locie. Jeśli pozwolisz narzędziu Snipping Tool wygenerować wartość automatycznie, odpowiedź będzie zawierać tę wygenerowaną wartość — traktuj ją jako dotyczącą twojego najnowszego aktywnego żądania.
Pobieranie przechwyconych multimediów przy użyciu tokenu
Użyj klasy SharedStorageAccessManager , aby zrealizować przechwycony file-access-token plik i uzyskać do niego dostęp.
Ograniczenia tokenu:
- Token można zrealizować tylko raz. Po wykupie nie jest już ważny.
- Token wygasa po upływie 14 dni.
- Aplikacja nie może mieć więcej niż 1000 aktywnych tokenów. Po zrealizowaniu, usunięciu lub wygaśnięciu tokenu, nie jest już uwzględniany ze względu na limit.
// 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);
Zagadnienia dotyczące zabezpieczeń
Narzędzie snipping weryfikuje wszystkie redirect-uri wartości przed ich uruchomieniem. Wymuszane są następujące zabezpieczenia:
- Osoby wywołujące aplikacje w pakiecie: Gdy aplikacja jest spakowaną aplikacją Windows (MSIX), system operacyjny bezpiecznie kieruje odpowiedź na przechwytywanie z powrotem do aplikacji, zapewniając, że tylko ona może ją odbierać. Jest to zalecana ścieżka integracji.
- Walidacja danych wejściowych: Narzędzie fragmentowania odrzuca identyfikatory URI przekierowania zawierające ścieżki UNC, wiodące/końcowe znaki odstępu lub znaki sterujące.
-
Brak fragmentów: URI przekierowania zawierające fragment adresu URL (na przykład
my-app://response#section) są odrzucane. Narzędzie fragmentujące dołącza parametry odpowiedzi jako ciąg zapytania, a fragment je połyka. - Ochrona samoodwołania: Identyfikatory URI przekierowania, które mogą prowadzić do rekurencyjnej aktywacji narzędzia Wycinanie, są blokowane.
Ważna
W przypadku wywoływania aplikacji:
- Zarejestruj obsługę protokołu dla schematu URI przekierowania, aby aplikacja mogła odebrać odpowiedź.
- Zweryfikuj i odczysz wszystkie parametry odebrane w odpowiedzi przed ich przetworzeniem.
- Sprawdź, czy odpowiedź
x-request-correlation-idjest zgodna z żądaniem w locie, aby uniknąć obsługi nieaktualnej odpowiedzi lub mieszania współbieżnych żądań. Identyfikator korelacji zapobiega pomyłkom; nie ustanawia źródła tokenu — bezpieczne routowanie tokenu odbywa się za pośrednictwem kanału wywołania zwrotnego aplikacji pakietowej.