我使用ngrok在raspberry pi上公开我的本地主机,ngrok受密码保护。我正在网络之外的另一台计算机上使用Django访问此raspberry pi上的网页(简单服务器)。我不想手动输入ngrok的用户名和密码
如何自动填写ngrok用户/密码,这是chrome中的一个弹出窗口,询问用户和密码
我所尝试的:
我第一次尝试在模板中使用JS,只是使用了一个获取请求:
https://user:password@myngrokdomain.ngrok.io
但是chrome在控制台中抛出了一个错误,说我不能像这样以纯文本形式传递凭据,所以
然后我尝试使用python请求:
UN= "myuser"
PWD = "mypassword"
loginURL = "https://myngrokdomain.ngrok.io"
client = requests.session()
login_data = dict(username=UN, password=PWD,)
r = client.post(loginURL, data=login_data)
这返回了401访问被拒绝的消息
r.headers + r.reason
返回:
401 Unauthorized Unauthorized {'Content-Length': '16', 'Content-Type': 'text/plain', 'Www-Authenticate': 'Basic realm="ngrok"', 'Date': 'Tue, 16 Mar 2021 15:22:15 GMT'}
您需要区分是从浏览器还是从服务器应用程序发出请求
浏览者
如果你在浏览器上做这件事,你就遇到了CORS问题,而ngrok在提供
auth
时不支持这一点。从docs开始:在这种情况下,您唯一的选择是在应用程序中实现身份验证,而不是使用ngrok的
auth
服务器
如果您从服务器应用程序发送请求,则不会遇到任何CORS问题,但需要正确提供基本身份验证凭据
假设您的应用程序通过ngrok公开在
http://myapp.ngrok.io
通过auth user:pass
保护在plain Node.js中,您可以执行以下操作:
请注意,要点击https url,您将使用节点的}
https
模块而不是http
,或者使用一个更高级别的库来处理它,如^{在Python中,您可以做类似的事情,this question可能会让您走上正确的道路
ngrok使用的身份验证方法称为HTTP Basic Auth。要将其与请求库一起使用,请在
auth
参数中将login和password作为元组传递:文件:Basic Authentication — Requests
首先尝试在登录页面上执行get。也许它正在设置一些cookies,希望它们出现在帖子上:
相关问题 更多 >
编程相关推荐