superset: In HTTPS Change of data source not working on Table and Dashboards

supersetImage A clear and concise description of what the bug is.

CodeBase: Master Branch

When trying to change superset data source from HTTPS it is trying to open Url in HTTP in which it is creating the error.

Error: Unsafe attempt to load URL, Domains, protocols, and ports must match

Expected results

It should load URL’s with only HTTps what you expected to happen.

Actual results

what actually happens.

Screenshots

![supersetImage]( supersetImage

)

If applicable, add screenshots to help explain your problem.

How to reproduce the bug

  1. Go to Superset sources and select Tables.
  2. Click on any source this will open that source
  3. Now click on Data Source drop-down and select change data source and select any data source.
  4. This will show error

Environment

(please complete the following information):

  • superset version: superset version
  • python version: python --version
  • node.js version: node -v
  • npm version: npm -v

Checklist

Make sure these boxes are checked before submitting your issue - thank you!

  • I have checked the superset logs for python stacktraces and included it here as text if there are any.
  • I have reproduced the issue with at least the latest released version of superset.
  • I have checked the issue tracker for the same issue and I haven’t found one similar.

Additional context

Add any other context about the problem here.

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 17 (2 by maintainers)

Most upvoted comments

Here is my working nginx config

worker_processes auto;

error_log /var/log/nginx/error.log error;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] $status '
    '"$request" $body_bytes_sent "$http_referer" '
    '"$http_user_agent"';

    access_log /var/log/nginx/access.log main;

    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;

    client_header_buffer_size 1k;
    large_client_header_buffers 4 4k;

    gzip on;
    gzip_min_length 1100;
    gzip_buffers 4 8k;
    gzip_types text/plain;

    output_buffers 1 32k;
    postpone_output 1460;

    sendfile on;
    tcp_nopush on;

    tcp_nodelay on;

    client_max_body_size 200M;

    server_tokens off;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    upstream backend {
        server IP;
    }

    server {
        listen 80;
        server_name _;
        return 301 https://$server_name$request_uri;
    }

    server {
        listen 443 ssl;
        server_name analytics.local;
        ssl_certificate /etc/nginx/ssl/ssl.crt;
        ssl_certificate_key /etc/nginx/ssl/ssl.key;

        underscores_in_headers on;

        location / {
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_read_timeout 300s;
            proxy_connect_timeout 300s;
            proxy_send_timeout 300s;
            proxy_pass http://backend;
            proxy_max_temp_file_size 0;
        }
    }
}

thank you, i got it. this reason is config in nginx not apply when i change.Once again I thank you very much for your help

Here is my working nginx config

worker_processes auto;

error_log /var/log/nginx/error.log error;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] $status '
    '"$request" $body_bytes_sent "$http_referer" '
    '"$http_user_agent"';

    access_log /var/log/nginx/access.log main;

    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;

    client_header_buffer_size 1k;
    large_client_header_buffers 4 4k;

    gzip on;
    gzip_min_length 1100;
    gzip_buffers 4 8k;
    gzip_types text/plain;

    output_buffers 1 32k;
    postpone_output 1460;

    sendfile on;
    tcp_nopush on;

    tcp_nodelay on;

    client_max_body_size 200M;

    server_tokens off;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    upstream backend {
        server IP;
    }

    server {
        listen 80;
        server_name _;
        return 301 https://$server_name$request_uri;
    }

    server {
        listen 443 ssl;
        server_name analytics.local;
        ssl_certificate /etc/nginx/ssl/ssl.crt;
        ssl_certificate_key /etc/nginx/ssl/ssl.key;

        underscores_in_headers on;

        location / {
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_read_timeout 300s;
            proxy_connect_timeout 300s;
            proxy_send_timeout 300s;
            proxy_pass http://backend;
            proxy_max_temp_file_size 0;
        }
    }
}

You need to add this line inside your Nginx config proxy_set_header X-Forwarded-Proto https;

Also in superset_config.py you must enable this:

ENABLE_PROXY_FIX = True
PROXY_FIX_CONFIG = {"x_for": 1, "x_proto": 1, "x_host": 1, "x_port": 1, "x_prefix": 1

Issue-Label Bot is automatically applying the label #bug to this issue, with a confidence of 0.94. Please mark this comment with 👍 or 👎 to give our bot feedback!

Links: app homepage, dashboard and code for this bot.