使用 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: 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
时,您将被重定向到您的页面并登录。
我在 Safari 上使用 Capybara/Selenium 进行浏览器身份验证时遇到问题。
我正在使用此代码进行身份验证:
visit "https://#{ENV['AUTH_USERNAME']}:#{ENV['AUTH_PASSWORD']}@my-staging-app.heroku.com"
这在 Chrome 和 FF 上工作正常,但在 Safari 上不行。
有什么办法绕过这个吗?
好的,我已经找到解决方案了。我不得不使用反向代理,例如Nginx 并发送正确的 headers :)
这是我的做法:
在这个例子中,我将使用 creds 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
时,您将被重定向到您的页面并登录。