首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web.config设置在.net核心3.1Azure多实例缩放应用服务中不受尊重?

web.config设置在.net核心3.1Azure多实例缩放应用服务中不受尊重?
EN

Stack Overflow用户
提问于 2021-03-25 20:09:32
回答 1查看 803关注 0票数 0

我试图从发布到Azure的“纯”web应用程序(即没有MVC)返回的响应中添加/删除某些http头。

我将以下web.config添加到VS2019中的项目中:

代码语言:javascript
复制
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-Content-Type-Options" value="nosniff"/>
        <add name="X-Frame-Options" value="SAMEORIGIN"/>
        <remove name="X-Powered-By"/>
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

这在我使用IISExpress的开发环境中运行得很好。当应用程序发布到Azure时,它也可以正常工作,因为应用程序服务没有配置为多实例缩放。然而,当应用程序服务被配置为多实例缩放(在我的例子中是三个实例)时,来自应用程序的响应包含“X驱动-通过”和没有“X-内容-类型-选项”或“X-帧-选项”。

发布在我的dev机器上的Out文件夹中创建以下web.config:

代码语言:javascript
复制
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-Content-Type-Options" value="nosniff" />
        <add name="X-Frame-Options" value="SAMEORIGIN" />
        <remove name="X-Powered-By" />
      </customHeaders>
    </httpProtocol>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath=".\<apname>.exe" stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" hostingModel="inprocess" />
  </system.webServer>
</configuration>

我还验证了上面的web.config存在于Azure应用服务的根目录中。

在Azure中的app服务配置中还有什么需要做的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-26 02:17:00

测试之后,您不需要进行任何更改。在代码或web.config中,您的解决方案目前是可行的,前提是它部署在基于windows的webapp中。如果它是在linux下部署的,那么web.config文件是无效的。web.config文件仅适用于iis。在linux下,需要使用的配置文件应该是.htaccess

将web.config放在www.root路径下,后者是项目的根目录.

基于,部署后效果应与本地iis效果一致。在测试之后,在我部署之后,您可以看到屏幕截图,并且在您的web.config中已经取得了效果。

注:

某些标头不能被删除,但它们可以被覆盖。他们需要在程序中被编码。你还没有参与到这个问题中。

代码语言:javascript
复制
<httpProtocol>
  <customHeaders>
    <add name="X-Content-Type-Options" value="nosniff" />
    <add name="X-Frame-Options" value="SAMEORIGIN" />
    <-- replace server vaule -->
    <add name="Server" value="N/A" />
    <remove name="X-Powered-By" />
  </customHeaders>
</httpProtocol>

测试步骤:

方法1与web.config

  1. 创建一个示例项目,如下所示.

  1. 部署到azure,请在scm站点上查看我的文件.

方法2没有web.config (变通方法,也适用于linux)

Startup.cs中添加下面的代码,它也适用于我。

代码语言:javascript
复制
app.Use(async (context, next) =>
{
    context.Response.Headers.Add("X-Content-Type-Options", "nosniff");
    context.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
    context.Response.Headers.Remove("X-Powered-By");
    await next.Invoke();
});

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66806853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档