Enable “Try it” in Dev Portal for requests with any header
Configures the CORS plugin to support sending requests with any headers from the Dev Portal spec renderer. You must use this configuration if the Routes associated with your API specs include any headers, standard or custom.
Prerequisites
-
If the Routes associated with your API specs use any headers, add
methods: OPTIONS
to any Routes that use the headers. -
If the Routes associated with your API specs require custom headers to match (the request has to be made with the specified header, otherwise the request will be a 404), configure one of the following:
- Add a new Route at the same path with
methods: OPTIONS
configured - Add a global Route at the Control Plane-level with
methods: OPTIONS
configured. You don’t need to specify any path.
- Add a new Route at the same path with
Environment variables
-
PORTAL_URL
: The full URL of your Dev Portal, including the protocol. For example:https://domain.us.kongportals.com
-
HEADER
: The name of your header.
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: cors
config:
origins:
- ${{ env "DECK_PORTAL_URL" }}
headers:
- ${{ env "DECK_HEADER" }}
Make the following request:
curl -i -X POST http://localhost:8001/plugins/ \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "cors",
"config": {
"origins": [
"'$PORTAL_URL'"
],
"headers": [
"'$HEADER'"
]
}
}
'
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN" \
--data '
{
"name": "cors",
"config": {
"origins": [
"'$PORTAL_URL'"
],
"headers": [
"'$HEADER'"
]
}
}
'
Make sure to replace the following placeholders with your own values:
-
region
: Geographic region where your Kong Konnect is hosted and operates. -
controlPlaneId
: Theid
of the control plane. -
KONNECT_TOKEN
: Your Personal Access Token (PAT) associated with your Konnect account.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongClusterPlugin
metadata:
name: cors
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
labels:
global: 'true'
config:
origins:
- '$PORTAL_URL'
headers:
- '$HEADER'
plugin: cors
" | kubectl apply -f -
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_cors" "my_cors" {
enabled = true
config = {
origins = [var.portal_url]
headers = [var.header]
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
}
This example requires the following variables to be added to your manifest. You can specify values at runtime by setting TF_VAR_name=value
.
variable "header" {
type = string
}
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: cors
service: serviceName|Id
config:
origins:
- ${{ env "DECK_PORTAL_URL" }}
headers:
- ${{ env "DECK_HEADER" }}
Make sure to replace the following placeholders with your own values:
-
serviceName|Id
: Theid
orname
of the service the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/services/{serviceName|Id}/plugins/ \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "cors",
"config": {
"origins": [
"'$PORTAL_URL'"
],
"headers": [
"'$HEADER'"
]
}
}
'
Make sure to replace the following placeholders with your own values:
-
serviceName|Id
: Theid
orname
of the service the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/services/{serviceId}/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN" \
--data '
{
"name": "cors",
"config": {
"origins": [
"'$PORTAL_URL'"
],
"headers": [
"'$HEADER'"
]
}
}
'
Make sure to replace the following placeholders with your own values:
-
region
: Geographic region where your Kong Konnect is hosted and operates. -
controlPlaneId
: Theid
of the control plane. -
KONNECT_TOKEN
: Your Personal Access Token (PAT) associated with your Konnect account. -
serviceId
: Theid
of the service the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: cors
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
config:
origins:
- '$PORTAL_URL'
headers:
- '$HEADER'
plugin: cors
" | kubectl apply -f -
Next, apply the KongPlugin
resource by annotating the service
resource:
kubectl annotate -n kong service SERVICE_NAME konghq.com/plugins=cors
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_cors" "my_cors" {
enabled = true
config = {
origins = [var.portal_url]
headers = [var.header]
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
service = {
id = konnect_gateway_service.my_service.id
}
}
This example requires the following variables to be added to your manifest. You can specify values at runtime by setting TF_VAR_name=value
.
variable "header" {
type = string
}
Add this section to your declarative configuration file:
_format_version: "3.0"
plugins:
- name: cors
route: routeName|Id
config:
origins:
- ${{ env "DECK_PORTAL_URL" }}
headers:
- ${{ env "DECK_HEADER" }}
Make sure to replace the following placeholders with your own values:
-
routeName|Id
: Theid
orname
of the route the plugin configuration will target.
Make the following request:
curl -i -X POST http://localhost:8001/routes/{routeName|Id}/plugins/ \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "cors",
"config": {
"origins": [
"'$PORTAL_URL'"
],
"headers": [
"'$HEADER'"
]
}
}
'
Make sure to replace the following placeholders with your own values:
-
routeName|Id
: Theid
orname
of the route the plugin configuration will target.
Make the following request:
curl -X POST https://{region}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/routes/{routeId}/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $KONNECT_TOKEN" \
--data '
{
"name": "cors",
"config": {
"origins": [
"'$PORTAL_URL'"
],
"headers": [
"'$HEADER'"
]
}
}
'
Make sure to replace the following placeholders with your own values:
-
region
: Geographic region where your Kong Konnect is hosted and operates. -
controlPlaneId
: Theid
of the control plane. -
KONNECT_TOKEN
: Your Personal Access Token (PAT) associated with your Konnect account. -
routeId
: Theid
of the route the plugin configuration will target.
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: cors
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
config:
origins:
- '$PORTAL_URL'
headers:
- '$HEADER'
plugin: cors
" | kubectl apply -f -
Next, apply the KongPlugin
resource by annotating the httproute
or ingress
resource:
kubectl annotate -n kong httproute konghq.com/plugins=cors
kubectl annotate -n kong ingress konghq.com/plugins=cors
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "$KONNECT_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_cors" "my_cors" {
enabled = true
config = {
origins = [var.portal_url]
headers = [var.header]
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
route = {
id = konnect_gateway_route.my_route.id
}
}
This example requires the following variables to be added to your manifest. You can specify values at runtime by setting TF_VAR_name=value
.
variable "header" {
type = string
}