Uruchamianie narzędzia wycinania

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 pomija api-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 /image parametru trybu (np. rectangle, freeform, window) jest wymagany w identyfikatorze URI, nawet jeśli enabledModes jest 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=RectangleSnip udostępnia zarówno dowolny kształt (z identyfikatora URI), jak i prostokątny fragment z wybranym wstępnie kształtem.
  • Jeśli enabledModes zostanie 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 parametru enabledModes.

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-id jest 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.