我正在运行一个本地网络服务器,该服务器向ngrok服务器运行XHR请求,该服务器也从我的PC运行。
我得到了XMLHttpRequest cannot load http://foo.ngrok.io/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access
。
似乎ngrok常见问题解答提到了CORS标题,但仅与基本身份验证相关 - 它没有提及如何设置标题,以便我可以在开发中测试我的应用程序。
如何更改ngrok的CORS选项以允许从localhost加载请求?
答案 0 :(得分:4)
我今天偶然发现了这个问题,可以通过启动ngrok
并包含-host-header
标志来解决。
ngrok http -host-header=rewrite 3000
从文档中
使用
-host-header
开关重写传入的HTTP请求。如果指定了重写,则主机头将被重写以匹配 转发地址的主机名部分。
答案 1 :(得分:1)
首先,ngrok只是一个隧道而不是服务器,因此在ngrok中配置CORS头是不可能的。因此,任何类型的CORS配置都需要在服务器级别完成。
例如,如果您使用的是nginx服务器,则需要在nginx conf文件中配置标头,如:
location / {
/*some default configuration here*/
add_header 'Access-Control-Allow-Origin' '*';
}
通过添加此标头,您可以说任何地址都允许对您的地址进行跨域访问,因为标头的值为“*”。您还可以通过替换值来指定允许访问您的地址的特定地址。
答案 2 :(得分:0)
如果您将 ngrok 与 nodejs/express.js 一起使用。
使用此代码:
<button onclick="code()">Enter</button>
<div id="head"></div>
<div id="hi"></div>
将“YOUR-DOMAIN.TLD”替换为“*”以访问所有网址或您的特定网站网址。