配置ngrok的CORS头

时间:2016-10-30 09:32:03

标签: ngrok

我正在运行一个本地网络服务器,该服务器向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加载请求?

3 个答案:

答案 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”替换为“*”以访问所有网址或您的特定网站网址。

详情请参阅https://enable-cors.org/server_expressjs.html