Базовая аутентификация браузера с Safari Capybara Selenium

У меня проблема с аутентификацией браузера в Safari с использованием Capybara/Selenium.

Я использую этот код для аутентификации:

visit "https://#{ENV['AUTH_USERNAME']}:#{ENV['AUTH_PASSWORD']}@my-staging-app.heroku.com"

Это прекрасно работает на Chrome и FF, но не на Safari.

Есть идеи как обойти это?

1 ответ

Решение

Окей, я нашел решение для этого. Я должен был использовать обратный прокси, используя, например, Nginx и отправлять соответствующие заголовки:)

Вот как я это сделал:

В этом примере я буду использовать кредиты login: admin а также password: secret123,

Перейдите на https://www.base64encode.org/ и закодируйте свои кредиты admin:secret123,

В этом примере это YWRtaW46c2VjcmV0MTIz

brew install nginx

sudo vim /usr/local/etc/nginx/nginx.conf

В прошлом там этот код:

worker_processes  1;  

events {
    worker_connections 1024;
}

http {
    server {
        listen 8080;
        server_name localhost;

        location / { 
            proxy_pass https://your_app.herokuapp.com;
            proxy_set_header Authorization "Basic YWRtaW46c2VjcmV0MTIz";
        }   
    }   
}

+ Изменить proxy_pass чтобы соответствовать URL вашего приложения.

А также proxy_set_header в Authorization "Basic <your_encoded_creds>"

Затем: brew services start nginx

Отныне, когда вы нажмете http://localhost:8080 Вы будете перенаправлены на свою страницу и авторизованы.

Другие вопросы по тегам