> For the complete documentation index, see [llms.txt](https://docs.line.openad.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.line.openad.network/getting-started/for-publisher/troubleshooting-guide/banners-not-delivering-over-ssl.md).

# Banners Not Delivering over SSL

### `Symptoms`

Banners deliver over HTTP, but will not deliver over SSL (HTTPS).

### `Troubleshooting Process`

#### **Step 1: Check for HTML Banners with HTTP Content**

Ensure that your HTML banners don’t include any content (like images or CSS files) served over HTTP. OpenAD Protocol excludes any banners with HTTP content when delivering over HTTPS to avoid warnings from browsers about mixed content.

#### **Step 2: Solution**

Update your HTML banners to use HTTPS for all included content, ensuring seamless delivery on HTTPS-enabled pages.

#### Step 3: Check for HTTP to HTTPS Server Redirects (3xx) when using the Asynchronous JS Tag

When using the "Asynchronous JS Tag" for delivery, check if the issue is related to enforcing SSL on an HTTP page. The Asynchronous JS Tag automatically uses the same protocol (HTTP or HTTPS) as the page where it’s embedded:

* If placed on an HTTP page, the tag will connect to your OpenAD Protocol instance using HTTP.
* If your OpenAD Protocol returns an HTTP 3xx response code, indicating a redirect to HTTPS, this will not work.

The Asynchronous JS Tag first calls OpenAD Protocol to retrieve data which is required to update the tag placeholder, so that the relevant banner can be loaded. For this to work, OpenAD Protocol returns some [Cross-Origin Resource Sharing (CORS)](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) headers.

However, most browsers will perform the request to the Asynchronous JS Tag as a CORS preflight request. [The specification for CORS forbids the processing of 3xx redirects](https://stackoverflow.com/a/20854800/1829524). This means that an Asynchronous JS Tag embedded on an HTTP page ***must*** be able to access OpenAD Protocol's `sdkloader.js` script over HTTP.

If you have configured your webserver to enforce the use of SSL by redirecting requests over HTTP to HTTPS, then your options are:

* Ensure that your Asynchronous JS Tag is only ever embedded on sites delivered using SSL;
* Disable the redirection to SSL for the `sdkloader.js` script, so that this can be accessed via both HTTP and HTTPS; or
* Use a different tag type.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.line.openad.network/getting-started/for-publisher/troubleshooting-guide/banners-not-delivering-over-ssl.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
