As part of our filing for Chapter 11 bankruptcy relief, Akamai has acquired select assets from Edgio, including certain customer contracts from our content delivery, applications, and security businesses, but not including Uplynk. We encourage any active Edgio delivery, applications, or security customers that are not already engaged with Akamai to migrate their services, to contact their local Akamai office or support@edg.io as soon as possible to help avoid service interruptions. Service will end on January 15, 2025.


Any Edgio Uplynk customers can reach out to support@uplynk.com for any questions or concerns.

Edgio

Header Manipulation

Edge functions can be used to manipulate the request and response headers of a request. This can be useful for adding security headers, modifying the cache behavior, or adding custom headers to requests.

Basic Header Manipulation

The Request and Response objects in the Fetch API provide methods for accessing and modifying the request and response headers. These methods can be used to add, remove, or modify the headers either before or after the request is sent to the origin.

Router Configuration

JavaScriptroutes.js
1import {Router, edgioRoutes} from '@edgio/core';
2
3export default new Router()
4 .use(edgioRoutes)
5
6 .match('/some/path', {
7 edge_function: './edge-functions/main.js',
8 })

Edge Function

JavaScriptedge-functions/main.js
1export async function handleHttpRequest(request, context) {
2
3 // Fetch the response from the origin
4 const response = await fetch(new Request(request.url, request), {
5 edgio: {
6 origin: 'web',
7 },
8 });
9
10 // Add a custom header to the response
11 response.headers.set('x-custom-header', 'foo');
12
13 // Return the response to the client
14 return response;
15}

Original Client IP

The original client IP address can be retrieved from the context object in an edge function. This can be useful for logging or security purposes, such as adding the client IP address to the request headers.

Router Configuration

JavaScriptroutes.js
1import {Router, edgioRoutes} from '@edgio/core';
2
3export default new Router()
4 .use(edgioRoutes)
5
6 .match('/some/path', {
7 edge_function: './edge-functions/main.js',
8 })

Edge Function

JavaScriptedge-functions/main.js
1export async function handleHttpRequest(request, context) {
2 // Retrieve the client's IP address from the context object
3 const clientIP = context.client.dst_addr;
4
5 const newRequest = new Request(request.url, request);
6
7 // Add the true-client-ip header to the incoming request
8 newRequest.headers.set('true-client-ip', clientIP);
9
10 // Continue with the modified request to the origin
11 return fetch(newRequest, {
12 edgio: { origin: 'web' },
13 });
14}

Content Security Policy

The Content Security Policy (CSP) is a security standard that can be used to mitigate the risk of cross-site scripting (XSS) attacks. It allows you to specify the domains from which various types of content can be loaded, such as scripts, stylesheets, images, and fonts. It also allows you to specify the domains from which the page can be embedded in a frame.

Router Configuration

JavaScriptroutes.js
1import {Router, edgioRoutes} from '@edgio/core';
2
3export default new Router()
4 .use(edgioRoutes)
5
6 .match('/some/path', {
7 edge_function: './edge-functions/main.js',
8 })

Edge Function

JavaScriptedge-functions/main.js
1export async function handleHttpRequest(request, context) {
2 // Fetch the response from the origin
3 const response = await fetch(new Request(request.url, request), {
4 edgio: {
5 origin: 'web',
6 },
7 });
8
9 // Set HTTP security headers
10 response.headers.set(
11 'strict-transport-security',
12 'max-age=63072000; includeSubdomains; preload'
13 );
14 response.headers.set(
15 'content-security-policy',
16 "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'; frame-ancestors 'none'"
17 );
18 response.headers.set('x-content-type-options', 'nosniff');
19 response.headers.set('x-frame-options', 'DENY');
20 response.headers.set('x-xss-protection', '1; mode=block');
21 response.headers.set('referrer-policy', 'same-origin');
22
23 // Return the response to the client
24 return response;
25}