{"version":3,"sources":["webpack:///./src/pages/docs/installation/networking_settings.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","parentName","isMDXComponent"],"mappings":"wPAQaA,G,UAAe,S,qOAC5B,IAAMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAG5E,iBAAQ,CACN,GAAM,kCADR,kCAGA,iBAAQ,CACN,GAAM,QADR,QAGA,yHACA,uBAAK,gCAAMC,WAAW,OAAU,CAC5B,UAAa,oBADZ,wCAIL,8CAA6B,0BAAYA,WAAW,KAAvB,sBAA7B,wCACA,sBACE,kBAAIA,WAAW,MAAK,0BAAYA,WAAW,MAAvB,eAApB,oBAAiG,0BAAYA,WAAW,MAAvB,QAAjG,4BACA,kBAAIA,WAAW,MAAK,0BAAYA,WAAW,MAAvB,gBAApB,oCACH,6BAAGA,WAAW,MAAS,CAChB,KAAQ,oEADf,iBADG,MAKF,iBAAQ,CACN,GAAM,mBADR,mBAGA,sNAEF,6BAAGA,WAAW,KAAQ,CAChB,KAAQ,iDADd,WAFE,yJAOA,0DAAyC,0BAAYA,WAAW,KAAvB,sBAAzC,UACA,sBACE,kBAAIA,WAAW,MAAK,0BAAYA,WAAW,MAAvB,8BAApB,6DAEF,iBAAQ,CACN,GAAM,cADR,cAGA,gHACF,0BAAYA,WAAW,KAAvB,yBADE,gBACgF,0BAAYA,WAAW,KAAvB,sBADhF,KACoJ,0BAAYA,WAAW,KAAvB,yBADpJ,6DAGA,4CAA2B,0BAAYA,WAAW,KAAvB,oBAA3B,0GAC0C,0BAAYA,WAAW,KAAvB,4BAD1C,+DAE4B,0BAAYA,WAAW,KAAvB,eAF5B,gC,mOAOJJ,EAAWK,gBAAiB","file":"component---src-pages-docs-installation-networking-settings-mdx-dc5c6f1a89e640a1d64c.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\n\nimport DefaultLayout from \"/home/runner/work/superset/superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n\n\n    <h2 {...{\n      \"id\": \"additional-networking-settings\"\n    }}>{`Additional Networking Settings`}</h2>\n    <h3 {...{\n      \"id\": \"cors\"\n    }}>{`CORS`}</h3>\n    <p>{`To configure CORS, or cross-origin resource sharing, the following dependency must be installed:`}</p>\n    <pre><code parentName=\"pre\" {...{\n        \"className\": \"language-python\"\n      }}>{`pip install apache-superset[cors]\n`}</code></pre>\n    <p>{`The following keys in `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{` can be specified to configure CORS:`}</p>\n    <ul>\n      <li parentName=\"ul\"><inlineCode parentName=\"li\">{`ENABLE_CORS`}</inlineCode>{`: Must be set to `}<inlineCode parentName=\"li\">{`True`}</inlineCode>{` in order to enable CORS`}</li>\n      <li parentName=\"ul\"><inlineCode parentName=\"li\">{`CORS_OPTIONS`}</inlineCode>{`: options passed to Flask-CORS\n(`}<a parentName=\"li\" {...{\n          \"href\": \"https://flask-cors.corydolphin.com/en/latest/api.html#extension\"\n        }}>{`documentation`}</a>{`)`}</li>\n    </ul>\n    <h3 {...{\n      \"id\": \"domain-sharding\"\n    }}>{`Domain Sharding`}</h3>\n    <p>{`Chrome allows up to 6 open connections per domain at a time. When there are more than 6 slices in\ndashboard, a lot of time fetch requests are queued up and wait for next available socket.\n`}<a parentName=\"p\" {...{\n        \"href\": \"https://github.com/apache/superset/pull/5039\"\n      }}>{`PR 5039`}</a>{` adds domain sharding to Superset,\nand this feature will be enabled by configuration only (by default Superset doesn’t allow\ncross-domain request).`}</p>\n    <p>{`Add the following setting in your `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{` file:`}</p>\n    <ul>\n      <li parentName=\"ul\"><inlineCode parentName=\"li\">{`SUPERSET_WEBSERVER_DOMAINS`}</inlineCode>{`: list of allowed hostnames for domain sharding feature.`}</li>\n    </ul>\n    <h3 {...{\n      \"id\": \"middleware\"\n    }}>{`Middleware`}</h3>\n    <p>{`Superset allows you to add your own middleware. To add your own middleware, update the\n`}<inlineCode parentName=\"p\">{`ADDITIONAL_MIDDLEWARE`}</inlineCode>{` key in your `}<inlineCode parentName=\"p\">{`superset_config.py`}</inlineCode>{`. `}<inlineCode parentName=\"p\">{`ADDITIONAL_MIDDLEWARE`}</inlineCode>{` should be a list\nof your additional middleware classes.`}</p>\n    <p>{`For example, to use `}<inlineCode parentName=\"p\">{`AUTH_REMOTE_USER`}</inlineCode>{` from behind a proxy server like nginx, you have to add a\nsimple middleware class to add the value of `}<inlineCode parentName=\"p\">{`HTTP_X_PROXY_REMOTE_USER`}</inlineCode>{` (or any other custom header\nfrom the proxy) to Gunicorn’s `}<inlineCode parentName=\"p\">{`REMOTE_USER`}</inlineCode>{` environment variable:`}</p>\n\n    </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}