使用 Safari Capybara Selenium 进行基本浏览器身份验证

Basic browser authentication with Safari Capybara Selenium

我在 Safari 上使用 Capybara/Selenium 进行浏览器身份验证时遇到问题。

我正在使用此代码进行身份验证:

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

这在 Chrome 和 FF 上工作正常,但在 Safari 上不行。

有什么办法绕过这个吗?

好的,我已经找到解决方案了。我不得不使用反向代理,例如Nginx 并发送正确的 headers :)

这是我的做法:

在这个例子中,我将使用 creds login: adminpassword: 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_headerAuthorization "Basic <your_encoded_creds>"

然后:brew services start nginx

从现在开始,当您点击 http://localhost:8080 时,您将被重定向到您的页面并登录。