web api instance method
XMLHttpRequest: setPrivateToken() method
Available in workersLimited availability
The XMLHttpRequest method setPrivateToken() adds private state token information to an XMLHttpRequest call, to initiate private state token operations.
Syntax
setPrivateToken(privateToken)
Parameters
privateToken- : An object containing options for initiating a private state token operation. Possible properties include:
issuersOptional- : An array of strings containing the URLs of issuers that you want to forward redemption records for. This setting is ignored unless
operationis set tosend-redemption-record, in which case theissuersarray must be included.
- : An array of strings containing the URLs of issuers that you want to forward redemption records for. This setting is ignored unless
operation- : A string representing the type of token operation you want to initiate. Possible values are:
token-request- : Initiates a token request operation.
token-redemption- : Initiates a token redemption operation.
send-redemption-record- : Initiates a send redemption record operation.
- : A string representing the type of token operation you want to initiate. Possible values are:
refreshPolicyOptional- : An enumerated value that specifies the expected behavior when a non-expired redemption record for the current user and site has previously been set. This setting is ignored unless
operationis set totoken-redemption. Possible values are:none- : The previously-set redemption record should be used, and a new one should not be issued. This is the default value.
refresh- : A new redemption record is always issued.
- : An enumerated value that specifies the expected behavior when a non-expired redemption record for the current user and site has previously been set. This setting is ignored unless
version- : A number indicating the version of the cryptographic protocol you wish to use when generating a token. Currently this is always set to
1, which is the only version that the specification supports. When specifying theprivateTokenoption, this property is mandatory.
- : A number indicating the version of the cryptographic protocol you wish to use when generating a token. Currently this is always set to
- : An object containing options for initiating a private state token operation. Possible properties include:
Return value
None (undefined).
Exceptions
InvalidStateErrorDOMException- : Thrown if the associated
XMLHttpRequestis not in an opened state, orsend()has already been called on it.
- : Thrown if the associated
NotAllowedErrorDOMException- : Thrown if use of Private State Token API operations is specifically disallowed by a
private-state-token-issuanceorprivate-state-token-redemptionPermissions Policy.
- : Thrown if use of Private State Token API operations is specifically disallowed by a
TypeError- : Thrown if the
operationis set tosend-redemption-record, and theissuesarray was empty or not set, or one or more of the specifiedissuersare not trustworthy, HTTPS URLs.
- : Thrown if the
Examples
Issuing a private token
const hasToken = await Document.hasPrivateToken(`issuer.example`);
if (!hasToken) {
const request = new XMLHttpRequest();
request.open(
"POST",
"https://issuer.example/.well-known/private-state-token/issuance",
);
request.setPrivateToken({
version: 1,
operation: "token-request",
});
req.send();
}
Redeeming a private token
const request = new XMLHttpRequest();
request.open(
"POST",
"https://issuer.example/.well-known/private-state-token/redemption",
);
request.setPrivateToken({
version: 1,
operation: "token-redemption",
refreshPolicy: "none",
});
req.send();
Forwarding a redemption record
const hasRR = await Document.hasRedemptionRecord(`issuer.example`);
if (hasRR) {
const request = new XMLHttpRequest();
request.open("POST", "some-resource.example");
request.setPrivateToken({
version: 1,
operation: "send-redemption-record",
issuers: ["https://issuer.example"],
});
req.send();
}
Specifications
SpecificationsStandards references are available on the canonical MDN page.
Browser compatibility
Browser compatibilityCompatibility data is available on the canonical MDN page.