{"version":3,"sources":["webpack:///./src/pages/docs/installation/networking_settings.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"wPAMaA,G,UAAe,S,qOAE5B,IAKMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAC5E,iBAAQ,CACN,GAAM,kCADR,kCAGA,iBAAQ,CACN,GAAM,QADR,QAGA,yHACA,uBAAK,mBAAU,CACX,UAAa,kBACb,WAAc,OAFb,wCAKL,8CACE,yBAAgB,CACd,WAAc,KADhB,sBADF,wCAKA,sBAEE,iBAAQ,CACN,WAAc,MACb,yBAAgB,CACf,WAAc,MADf,eAFH,oBAME,yBAAgB,CACd,WAAc,MADhB,QANF,4BAYA,iBAAQ,CACN,WAAc,MACb,yBAAgB,CACf,WAAc,MADf,gBAFH,oCAOE,gBAAO,CACL,KAAQ,kEACR,WAAc,MAFhB,iBAPF,MAcF,iBAAQ,CACN,GAAM,mBADR,mBAGA,sNAGE,gBAAO,CACL,KAAQ,yDACR,WAAc,KAFhB,WAHF,yJAUA,0DACE,yBAAgB,CACd,WAAc,KADhB,sBADF,UAKA,sBAEE,iBAAQ,CACN,WAAc,MACb,yBAAgB,CACf,WAAc,MADf,8BAFH,8DAQF,iBAAQ,CACN,GAAM,cADR,cAGA,gHAEE,yBAAgB,CACd,WAAc,KADhB,yBAFF,gBAME,yBAAgB,CACd,WAAc,KADhB,sBANF,KAUE,yBAAgB,CACd,WAAc,KADhB,yBAVF,6DAeA,4CACE,yBAAgB,CACd,WAAc,KADhB,oBADF,0GAME,yBAAgB,CACd,WAAc,KADhB,4BANF,+DAWE,yBAAgB,CACd,WAAc,KADhB,eAXF,gC,mOAmBJH,EAAWI,gBAAiB","file":"component---src-pages-docs-installation-networking-settings-mdx-ec0fcd788a9260efc0c7.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/srinify/Documents/incubator-superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\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    <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 research sharing, the following dependency must be installed:`}</p>\n    <pre><code {...{\n        \"className\": \"language-python\",\n        \"parentName\": \"pre\"\n      }}>{`pip install apache-superset[cors]\n`}</code></pre>\n    <p>{`The following keys in `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {` can be specified to configure CORS:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`ENABLE_CORS`}</inlineCode>\n        {`: Must be set to `}\n        <inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`True`}</inlineCode>\n        {` in order to enable CORS`}</li>\n\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`CORS_OPTIONS`}</inlineCode>\n        {`: options passed to Flask-CORS\n(`}\n        <a {...{\n          \"href\": \"https://flask-cors.corydolphin.com/en/latest/api.html#extension\",\n          \"parentName\": \"li\"\n        }}>{`documentation`}</a>\n        {`)`}</li>\n\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`}\n      <a {...{\n        \"href\": \"https://github.com/apache/incubator-superset/pull/5039\",\n        \"parentName\": \"p\"\n      }}>{`PR 5039`}</a>\n      {` 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 `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {` file:`}</p>\n    <ul>\n\n      <li {...{\n        \"parentName\": \"ul\"\n      }}><inlineCode {...{\n          \"parentName\": \"li\"\n        }}>{`SUPERSET_WEBSERVER_DOMAINS`}</inlineCode>\n        {`: list of allowed hostnames for domain shareding feature.`}</li>\n\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`}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`ADDITIONAL_MIDDLEWARE`}</inlineCode>\n      {` key in your `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`superset_config.py`}</inlineCode>\n      {`. `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`ADDITIONAL_MIDDLEWARE`}</inlineCode>\n      {` should be a list\nof your additional middleware classes.`}</p>\n    <p>{`For example, to use `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`AUTH_REMOTE_USER`}</inlineCode>\n      {` from behind a proxy server like nginx, you have to add a\nsimple middleware class to add the value of `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`HTTP_X_PROXY_REMOTE_USER`}</inlineCode>\n      {` (or any other custom header\nfrom the proxy) to Gunicorn’s `}\n      <inlineCode {...{\n        \"parentName\": \"p\"\n      }}>{`REMOTE_USER`}</inlineCode>\n      {` environment variable:`}</p>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}