<p>您需要区分是从浏览器还是从服务器应用程序发出请求</p>
<h2>浏览者</h2>
<p>如果你在浏览器上做这件事,你就遇到了CORS问题,而ngrok在提供<code> auth</code>时不支持这一点。从<a href="https://ngrok.com/docs#cors-basic-auth" rel="nofollow noreferrer">docs</a>开始:</p>
<blockquote>
<p>you cannot use ngrok's -auth option. ngrok's http tunnels allow you to specify basic authentication credentials to protect your tunnels. However, ngrok enforces this policy on <em>all</em> requests, including the preflight OPTIONS requests that are required by the CORS spec. In this case, your application must implement its own basic authentication</p>
</blockquote>
<p>在这种情况下,您唯一的选择是在应用程序中实现身份验证,而不是使用ngrok的<code> auth</code></p>
<h2>服务器</h2>
<p>如果您从服务器应用程序发送请求,则不会遇到任何CORS问题,但需要正确提供基本身份验证凭据</p>
<p>假设您的应用程序通过ngrok公开在<code>http://myapp.ngrok.io</code>通过<code> auth user:pass</code>保护</p>
<p>在plain Node.js中,您可以执行以下操作:</p>
<pre class="lang-js prettyprint-override"><code>const http = require('http')
http.get('http://myapp.ngrok.io', { auth: 'user:pass' }, res => {
const chunks = []
res.on('data', chunk => {
chunks.push(chunk)
})
res.on('end', () => {
console.log(Buffer.concat(chunks).toString('utf-8'))
})
})
</code></pre>
<p>请注意,要点击https url,您将使用节点的<code>https</code>模块而不是<code>http</code>,或者使用一个更高级别的库来处理它,如<a href="https://www.npmjs.com/package/node-fetch" rel="nofollow noreferrer">^{<cd7>}</a></p>
<p>在Python中,您可以做类似的事情,<a href="https://stackoverflow.com/questions/44239822/urllib-request-urlopenurl-with-authentication">this question</a>可能会让您走上正确的道路</p>