Skip to content
RU

ERR_BLOCKED_BY_RESPONSE: Which Header Blocked It, and How to Fix

Key idea:

net::ERR_BLOCKED_BY_RESPONSE is Chromium error -27. Chromium defines it as a request that «failed because the response was delivered along with requirements which are not met (X-Frame-Options and Content-Security-Policy ancestor checks and Cross-Origin-Resource-Policy for instance)» (net_error_list.h). In practice the most common trigger is the first one — a page refusing to be put in an <iframe> — not the cross-origin-isolation family. The error is not about TLS and does not block HTTPS: the response arrived over a working connection and was then rejected.

Below: how to tell which requirement blocked you, then the fix for each.

Check your site's security →

Which requirement blocked it

Four different mechanisms surface as the same network error. The DevTools console message tells them apart — read it before changing any header.

Blocked byConsole message containsFix on
X-Frame-Options«Refused to display … in a frame because it set X-Frame-Options»The framed site — drop the header or move to CSP
CSP frame-ancestors«Refused to frame … because an ancestor violates … frame-ancestors»The framed site — add your origin to the directive
Cross-Origin-Resource-Policya CORP entry in the Issues panel next to the failed requestThe resource server — set cross-origin
Cross-Origin-Embedder-Policythe embedding page sends require-corpEvery subresource must opt in with CORP

Two of these you cannot fix from your own site: X-Frame-Options and frame-ancestors are set by the site you are trying to embed, and they are a deliberate refusal. There is no client-side flag that overrides them. Check what a target actually sends with the HTTP header checker before assuming it is your configuration.

Common Causes

  • Page with Cross-Origin-Embedder-Policy: require-corp embeds a resource without CORP
  • COOP: same-origin + popup.open() to another origin
  • X-Frame-Options: DENY on iframe embed
  • CORP: same-site accessed from another eTLD+1
  • Broken CORS preflight with 200 but no Access-Control-Allow-Origin

Step-by-Step Fix

  1. On the embedded resource: Cross-Origin-Resource-Policy: cross-origin
  2. If you own both sides: CORP: same-site
  3. For iframes: Cross-Origin-Opener-Policy: unsafe-none (relaxes)
  4. Check Enterno HTTP Checker — see all response headers
  5. For SharedArrayBuffer: COOP + COEP both on same-origin + require-corp

Check your site's security →

Related network errors

TL;DR

The ERR_BLOCKED_BY_RESPONSE error occurs when a browser blocks a request due to Cross-Origin Embedder Policy (COEP) or Cross-Origin Resource Policy (CORP) settings. To resolve this, ensure your server responds with the correct headers: Cross-Origin-Embedder-Policy: require-corp and Cross-Origin-Resource-Policy: same-origin. Additionally, check for any CORS misconfigurations that may be causing the block.

Understanding ERR_BLOCKED_BY_RESPONSE

The ERR_BLOCKED_BY_RESPONSE error is a security feature in modern browsers designed to protect users from potentially malicious content. This error indicates that a resource was blocked due to the absence of appropriate Cross-Origin policies. COEP and CORP are security headers that help control how resources are shared across different origins. Specifically, COEP requires that any cross-origin resources are explicitly marked as safe via CORP, otherwise, they will be blocked.

When a web application requests resources (like scripts, images, or iframes) from a different origin, the browser checks the response headers to determine if the request should be allowed. If the required headers are not present or are incorrectly configured, the browser will block the request, leading to the ERR_BLOCKED_BY_RESPONSE error.

To better understand this issue, let's look at the two key headers:

  • Cross-Origin-Embedder-Policy (COEP): This header tells the browser that the document requires all of its cross-origin resources to be explicitly marked as safe. The possible values are unsafe-none, require-corp, and require-embedder.
  • Cross-Origin-Resource-Policy (CORP): This header controls how resources can be shared across origins. It can take values like same-origin, same-site, and cross-origin.

Both headers are crucial for maintaining a secure browsing experience and preventing clickjacking, data theft, and other security vulnerabilities.

Fixing ERR_BLOCKED_BY_RESPONSE

To fix the ERR_BLOCKED_BY_RESPONSE error, you need to ensure that your server is configured to send the appropriate headers. Here’s a step-by-step guide to resolving this error:

  1. Check Server Configuration: Depending on your server type (Apache, Nginx, etc.), you need to modify the configuration files to include the necessary headers.

Example for Apache

Header set Cross-Origin-Embedder-Policy "require-corp"
Header set Cross-Origin-Resource-Policy "same-origin"
  1. Check Resource Responses: Verify that all resources your application loads (images, scripts, etc.) respond with the correct CORP headers. You can use browser developer tools to inspect the network requests and their respective headers.
  2. Update Client-Side Code: Ensure that your client-side code properly handles cross-origin requests. If certain resources are being blocked, consider changing their origin or ensuring they are served with the correct headers.
  3. Test Changes: After making the necessary changes, test your application in multiple browsers to ensure that the error is resolved. Use tools like curl to verify the headers directly from the command line:
curl -I https://yourdomain.com/resource

If the headers are correctly set, you should see:

HTTP/1.1 200 OK
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Resource-Policy: same-origin

By following these steps, you should be able to effectively resolve the ERR_BLOCKED_BY_RESPONSE error and ensure your web application operates smoothly across different browsers.

HeadersCSP, HSTS, X-Frame-Options, etc.
SSL/TLSEncryption and certificate
ConfigurationServer settings and leaks
Grade A-FOverall security score

Why teams trust us

OWASP
guidelines
15+
security headers
<2s
result
A–F
security grade

How it works

1

Enter site URL

2

Security headers analyzed

3

Get grade A–F

What Does the Security Analysis Check?

The tool checks HTTP security headers, SSL/TLS configuration, server info leaks, and protection against common attacks (XSS, clickjacking, MIME sniffing). A grade fromA to F shows overall security level.

Header Analysis

Checking Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, and more.

SSL Check

TLS version, certificate expiry, chain of trust, HSTS support.

Leak Detection

Finding exposed server versions, debug modes, open configs, and directories.

Report with Recommendations

Detailed report explaining each issue with specific steps to fix it.

Who uses this

Security teams

HTTP header audit

DevOps

config verification

Developers

CSP & HSTS setup

Auditors

compliance checks

Common Mistakes

Missing Content-Security-PolicyCSP is the primary XSS defense. Without it, script injection is much easier.
Missing HSTS headerWithout HSTS, HTTPS-to-HTTP downgrade attacks are possible. Enable Strict-Transport-Security.
Server header exposes versionServer: Apache/2.4.52 helps attackers find exploits. Hide the version.
X-Frame-Options not setSite can be embedded in iframe for clickjacking. Set DENY or SAMEORIGIN.
Missing X-Content-Type-OptionsWithout nosniff, browsers may misinterpret file types (MIME sniffing).

Best Practices

Start with basic headersMinimum: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Takes 5 minutes.
Implement CSP graduallyStart with Content-Security-Policy-Report-Only, monitor violations, then enforce.
Hide server headersRemove Server, X-Powered-By, X-AspNet-Version from responses.
Configure Permissions-PolicyRestrict camera, microphone, geolocation access — only what is actually used.
Check after every deploySecurity headers can be overwritten during server configuration updates.

Get more with a free account

Security check history and HTTP security header monitoring.

Sign up free

Learn more

Frequently Asked Questions

What is Cross-Origin Isolation?

A mode where the page is safe from Spectre-class attacks. Required for SharedArrayBuffer, performance.measureUserAgentSpecificMemory, and high-precision timers.

When do I see this error?

DevTools → Console → "Failed to load resource: net::ERR_BLOCKED_BY_RESPONSE". Network tab — resource highlighted red.

Are Spectre mitigations about security?

Yes. Without COOP/COEP the page cannot safely use SharedArrayBuffer — hence Chrome's restrictions.

How to test this easily?

Enterno CORS checker inspects Access-Control-* headers. + DevTools → Network → Response Headers.

I get it when embedding another site in an iframe. How do I bypass it?

You do not. X-Frame-Options and CSP frame-ancestors are the target site refusing to be framed, enforced by the browser on their instruction. The only real routes are an agreement with that site to allow your origin, an API or oEmbed endpoint they publish, or server-side proxying with their permission.

Is this an SSL problem? Does it block HTTPS?

No. Chromium error -27 is decided after a response has already been delivered over a working connection — TLS is not in the path. The request is rejected because a requirement carried by that response was not met.

Try the live tool that powered this guide

Free plan — 10 monitors, checks every 5 min, no card required. Upgrade for 1-minute interval and multi-region monitoring.