Базовая аутентификация браузера с 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
Вы будете перенаправлены на свою страницу и авторизованы.