节点服务器的请求路径中的 http 或 https 会产生错误

http or https in request path to a node server creates an error

我正在尝试让 corsanywhere 在 Azure 上工作,如果我提出这样的要求,它实际上会工作:

https://myserver.azurewebsites.net/www.remoteserver.com/query=john

但是如果我调用它,我会收到 500 错误并且我不知道如何跟踪它(在这种情况下日志中没有产生错误):

https://myserver.azurewebsites.net/http://www.remoteserver.com/query=john

这种请求在 corsanywhere 演示站点上运行良好,或者当我 运行 我的节点应用程序在我的开发机器上运行时。

更新: Azure 上的节点需要一个 web.config 文件。这是我的:

<configuration>
<system.webServer>
      <handlers>
        <add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
      </handlers>
      <rewrite>
        <rules>
          <rule name="DynamicContent">
             <match url="/*" />
             <action type="Rewrite" url="server.js"/>
          </rule>
        </rules>
      </rewrite>
</system.webServer>
</configuration>

我想知道这是否是罪魁祸首...

感谢您的帮助

在 Azure 应用服务 (Windows OS) 中,URL 路径中不允许使用字符 :/。之前在 SO 上讨论过:Azure websites throw 500 error when there is a colon in the URL.

您可以尝试@TimBunting 的回答中的解决方案,或者将您的应用程序托管在 Linux App Service 上。