iisnode 401消息返回iis页面

时间:2016-10-20 06:38:33

标签: asp.net node.js express iis iisnode

我正在构建一个我正在使用nodejs express来执行rest api服务的应用程序。 我使用iisnode模块在Windows Server 2012上托管了该应用程序。一切都很完美。 问题是当我从节点应用程序返回404(未授权)消息时,端点正在接收带有iis错误页面的401 http状态。 有没有其他方法可以解决这个问题。

这是我的webconfig文件        

<!-- indicates that the hello.js file is a node.js application 
to be handled by the iisnode module -->

<handlers>
  <add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>

<!-- use URL rewriting to redirect the entire branch of the URL namespace
to hello.js node.js application; for example, the following URLs will 
all be handled by hello.js:
    http://localhost/node/express/myapp/foo
    http://localhost/node/express/myapp/bar
-->
<rewrite>
  <rules>
    <rule name="/">
      <match url="/*" />
      <action type="Rewrite" url="app.js" />
    </rule>
  </rules>
</rewrite>

我在nodejs app中的代码如下

 if(clienttoken!=servertoken)
{
    res.json(401, 'unauthorized');
    res.end();
}

enter image description here

提前致谢

2 个答案:

答案 0 :(得分:2)

使用IIS,如果要将错误从Node应用程序直接返回给请求者而不使用IIS使用默认错误页面拦截错误,请使用<httpErrors>元素并将existingResponse属性设置为{{ 1}}

PassThrough

答案 1 :(得分:0)

IIS正在模糊&#34;详细信息&#34;错误(您的json响应)因为默认情况下错误设置为DetailedLocalOnly,这意味着将显示来自运行网站的计算机的请求的错误详细信息,但显示该错误的通用IIS错误页面任何外部请求的代码。

将401错误设置为Detailed应该允许您的json响应:

<configuration>
  <system.webServer>
    <httpErrors errorMode="DetailedLocalOnly">
      <remove statusCode="401" />
      <error statusCode="401" errorMode="Detailed"/>
    </httpErrors>
  </system.webServer>
</configuration>

有关详细信息,请参阅https://www.iis.net/configreference/system.webserver/httperrors