{"id":1984,"date":"2017-08-31T12:44:32","date_gmt":"2017-08-31T07:14:32","guid":{"rendered":"https:\/\/pheonixsolutions.com\/blog\/?p=1984"},"modified":"2026-09-05T11:00:10","modified_gmt":"2026-09-05T05:30:10","slug":"allow-cross-origin-regioncors-nginx","status":"publish","type":"post","link":"https:\/\/pheonixsolutions.com\/blog\/allow-cross-origin-regioncors-nginx\/","title":{"rendered":"How to Enable Cross-Origin Resource Sharing (CORS) in NGINX"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Modern web applications often interact with APIs, static assets, and services hosted on different domains or subdomains. Browsers enforce a security mechanism called the <strong>Same-Origin Policy (SOP)<\/strong>, which prevents web pages from making requests to resources hosted on a different origin unless explicitly permitted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To allow these cross-domain requests, web servers must return specific HTTP headers known as <strong>Cross-Origin Resource Sharing (CORS)<\/strong> headers. When these headers are missing, browsers display errors such as:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">No 'Access-Control-Allow-Origin' header is present on the requested resource.<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This error is commonly seen in browser developer tools such as Google Chrome DevTools, Mozilla Firefox Developer Tools, and Microsoft Edge Developer Tools.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this guide, we will explain how to enable CORS in NGINX by adding the required HTTP headers and configuring the server to allow cross-origin requests.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">What is CORS?<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Cross-Origin Resource Sharing (CORS) is a browser security feature that allows a web application running on one domain to access resources hosted on another domain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">https:\/\/app.example.com<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">requesting data from:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">https:\/\/api.example.com<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Without CORS headers, the browser blocks the request even if the server is reachable.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Common CORS Error<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">You may encounter errors similar to:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Access to fetch at 'https:\/\/api.example.com'\nfrom origin 'https:\/\/app.example.com'\nhas been blocked by CORS policy.<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">No 'Access-Control-Allow-Origin' header is present.<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">These errors indicate that the server is not returning the required CORS headers.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Prerequisites<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Before proceeding, ensure that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>NGINX is installed and running.<\/li>\n\n\n\n<li>You have root or sudo access.<\/li>\n\n\n\n<li>You know which virtual host or website requires CORS support.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If NGINX is not installed, refer to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ubuntu 16.04 NGINX Installation Guide<\/li>\n\n\n\n<li>CentOS 7 NGINX Installation Guide<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Locate the NGINX Configuration File<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Depending on the operating system and NGINX setup, the configuration file may be located in:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/etc\/nginx\/sites-enabled\/default<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/etc\/nginx\/conf.d\/default.conf<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Open the configuration file:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">vi \/etc\/nginx\/sites-enabled\/default<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Enable CORS for GET Requests<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Inside the appropriate server block, locate:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">location \/ {\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add the following configuration:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">if ($request_method = 'GET') {\n    add_header 'Access-Control-Allow-Origin' '*';\n    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';\n    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';\n    add_header 'Access-Control-Expose-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range';\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This configuration instructs NGINX to return the required CORS headers whenever a GET request is received.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Explanation of the Headers<\/h1>\n\n\n\n<h3 class=\"wp-block-heading\">Access-Control-Allow-Origin<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">add_header 'Access-Control-Allow-Origin' '*';<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Allows requests from any domain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To restrict access to a specific domain:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">add_header 'Access-Control-Allow-Origin' 'https:\/\/example.com';<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Access-Control-Allow-Methods<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Defines which HTTP methods are permitted.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Access-Control-Allow-Headers<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Specifies which custom request headers may be sent by the client.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Access-Control-Expose-Headers<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">add_header 'Access-Control-Expose-Headers' 'Content-Length';<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Allows JavaScript applications to access specific response headers.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Verify NGINX Configuration<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Before restarting the service, validate the syntax:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nginx -t<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nginx: configuration file syntax is ok\nnginx: configuration file test is successful<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Restart NGINX<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Apply the changes:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">systemctl restart nginx<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Verify the service status:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">systemctl status nginx<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Test the Configuration<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">You can verify the headers using curl:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">curl -I https:\/\/your-domain.com<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example response:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Access-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: GET, POST, OPTIONS<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If these headers appear, CORS has been configured successfully.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Security Considerations<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Using:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Access-Control-Allow-Origin: *<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">allows requests from any website.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For production environments, it is recommended to specify trusted domains:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Access-Control-Allow-Origin: https:\/\/app.example.com<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This reduces the risk of unauthorized cross-origin access.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Cross-Origin Resource Sharing (CORS) is an essential component of modern web applications that interact with APIs, external services, and shared resources across domains. By configuring the appropriate CORS headers in NGINX, administrators can safely enable cross-domain communication while maintaining browser security requirements. Always validate your configuration, test the returned headers, and restrict access to trusted domains whenever possible to ensure a secure and reliable deployment.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Frequently Asked Questions (FAQ)<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">1. What causes the &#8220;No Access-Control-Allow-Origin header&#8221; error?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This error occurs when a browser attempts to access a resource hosted on a different origin and the server does not return the required CORS headers.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Can I allow multiple domains in NGINX CORS configuration?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. You can use variables, maps, or conditional logic to allow specific domains instead of using the wildcard (<code>*<\/code>) option.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">add_header 'Access-Control-Allow-Origin' 'https:\/\/example.com';<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Do I need to restart NGINX after changing the configuration?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Configuration changes take effect only after reloading or restarting NGINX.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">systemctl restart nginx<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">nginx -s reload<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Related Articles<\/h1>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Setting Different Document Roots for Subdirectories in NGINX<\/strong><br>Learn how to serve different applications and websites using separate document roots within NGINX.<br><a href=\"https:\/\/pheonixsolutions.com\/blog\/setting-different-documentroot-subdirectory-nginx\/\">https:\/\/pheonixsolutions.com\/blog\/setting-different-documentroot-subdirectory-nginx\/<\/a><\/li>\n\n\n\n<li><strong>Allow Cross-Origin Resource Sharing (CORS) for Fonts in NGINX<\/strong><br>Configure NGINX to properly serve web fonts across multiple domains and avoid browser font-loading restrictions.<br><a href=\"https:\/\/pheonixsolutions.com\/blog\/allow-cross-origin-regioncors-fonts-nginx\/\">https:\/\/pheonixsolutions.com\/blog\/allow-cross-origin-regioncors-fonts-nginx\/<\/a><\/li>\n\n\n\n<li><strong>Install NGINX on a cPanel Server<\/strong><br>Step-by-step guide to installing and configuring NGINX alongside cPanel for improved web server performance.<br><a href=\"https:\/\/pheonixsolutions.com\/blog\/install-nginx-cpanel-server\/\">https:\/\/pheonixsolutions.com\/blog\/install-nginx-cpanel-server\/<\/a><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Modern web applications often interact with APIs, static assets, and services hosted on different domains or subdomains. Browsers enforce [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1022],"tags":[372,271],"class_list":["post-1984","post","type-post","status-publish","format-standard","hentry","category-web-architecture","tag-cors","tag-nginx","psol-cat-web-architecture"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/phn2x7-w0","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=1984"}],"version-history":[{"count":1,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1984\/revisions"}],"predecessor-version":[{"id":11401,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/1984\/revisions\/11401"}],"wp:attachment":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=1984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=1984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=1984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}