Skip to main content

Inserting Content into Responses

Overview

The IAG provides the ability to insert content into HTTP responses for a specified URI. This is commonly referred to as content injection.

The following diagram outlines content injection processing:

Inserting content

Options

The available configuration options are defined in the Content Injection YAML reference.

Usage

The location can be either matched against a full line in the response, or any specific text in the response. This is controlled by the 'full_line_match' configuration entry.

Full Line Matching

  • The location can be pattern matched against a line in the response using the '*' and '?' wildcard characters;
  • The maximum length of a line which can be matched by this mechanism is 8192 bytes;
  • The pattern match is case-sensitive.

The content is then inserted immediately before the matching line.

  • You must include a new line character at the end of the content if you want it to be inserted as a separate line. Otherwise, IAG adds the content to the start of the matching line.

Partial Line Matching

  • An exact match is required when performing a partial line match. In other words, pattern matching characters are not supported.
  • The text comparison is case-sensitive.

The content can either be inserted immediately prior to the matching text, or it can replace the matching text. This is controlled by the 'replace_match' configuration entry.

Example

Using a simple HTML page:

<html>
<body>
Insert content before here:
Data
More data
</body>
</html>

The following example will insert a line of text before the string 'Insert content before here':

policies:
  content_injection:
    - name: inject_text
      paths: 
        - "/myapp/sampleResource.html"
      location: "Insert content before here*"
      content: "<hr/>This text was injected using content injection.<hr/>"  

Requests to https://<IAG container>/myapp/sampleResource.html will return a HTML page that contains the injected content.

<html>
<body>
<hr/>This text was injected using content injection.<hr/>Insert content before here:
Data
More data
</body>
</html>