繁体   English   中英

ASP.NET应用程序-在用户登录到网站之前不会加载Webfonts

[英]ASP.NET app - Webfonts not loading until user is logged in to the site

已编辑

再次调试,终于意识到真正的问题是什么(虽然不是解决问题的方法)。

当浏览器尝试为相关页面加载字体时,响应的状态码为302,

Location: /Login.aspx?ReturnUrl=%2ffonts%2ffontawesome-webfont.woff2

我们的身份验证模式默认将所有请求重定向到登录页面,并且看起来也包括字体:

<authentication mode="Forms">
  <forms loginUrl="~/Login.aspx" defaultUrl="~/Login.aspx" slidingExpiration="true" protection="All" timeout="60" path="/" />
</authentication>
<authorization>
  <deny users="?" />
</authorization>

以前这不是问题,因为您可以登录甚至可以查看网站上的大多数页面,并且这样做之后,字体可以很好地加载。 但是我正在处理的页面不需要登录(甚至无需在站点上拥有用户帐户),因此就出现了问题。

更新的问题是:如何使字体在不进行身份验证的情况下加载,并且不损害身份验证本身(安全风险等)?

原始帖子

我们有一个ASP.NET Webforms应用程序,该应用程序已经落后了数年,我已经开始尝试向其中添加Bootstrap。 到目前为止,一切都很好,但是我无法使字形图标正常工作-不断得到错误正方形而不是图标。 一段时间以来,我们已经成功使用了Fonts Awesome,所以我尝试了它们的图标-不,相同的错误方块(同样,在没有Bootstrap Fonts Awesome的页面上正常工作)。

Bootstrap已作为Nuget软件包(最新版本3.3.7)安装。 Font Awesome是4.4.0,是手动安装的。 我们确实使用Sass / Less。

我们通过捆绑添加脚本/ css:

        bundles.Add(new StyleBundle("~/css/styles").Include(
            "~/css/bootstrap.css",
            "~/css/font-awesome.min.css"));

这就是web.config的外观:

<staticContent>
  <mimeMap fileExtension="apk" mimeType="application/vnd.android.package-archive" />
  <remove fileExtension=".woff2" />
  <mimeMap fileExtension=".woff2" mimeType="font/woff2" />
  <remove fileExtension=".otf" />
  <mimeMap fileExtension=".otf" mimeType="font/otf" />
  <remove fileExtension=".woff" />
  <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
  <remove fileExtension=".eot" />
  <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
  <remove fileExtension=".ttf" />
  <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
  <remove fileExtension=".svg" />
  <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>

现在,许多人似乎也有类似的问题。 到目前为止,这是我尝试过的解决方案:

  1. 将css文件和字体放入默认文件夹(/ css和/ fonts位于同一级别,Bootstrap希望在其中看到它们;在@ font-face中覆盖url也不起作用)-这种改进很重要,因为现在两种字体都可以在Firefox(大部分时间)和Chrome(一半时间)中运行,但在Edge / IE中不起作用。
  2. web.config中MimeType的不同组合(没有任何区别)。
  3. 将Font Awesome更新到最新版本-也没有区别。
  4. Internet Explorer将不会显示Glyphicons或WebFonts-考虑了一下,但是如果是这样,为什么仅在启用Bootstrap的情况下才出现问题?
  5. 清除浏览器缓存(重复)。
  6. IE安全设置中的“不受信任的字体阻止”选项-默认情况下处于关闭状态,但情况并非如此。
  7. 使用开发工具检查字体是否确实正在加载-现在这才变得有趣。

Chrome给出了“无法解码下载的字体:(...)OTS解析错误:无效的版本标记”错误(如果这样做),并给出了“ CSS3114:@ font-face无法加载无效的OpenType字体”的错误( 参考表示应该为CSS3115,但无论如何,“获取许可或许可证”都无济于事。

对于两种浏览器,“网络”选项卡均显示以302 /找到的文本/ html格式加载的字体文件(并且页面/控制台仍存在错误)。 对于Chrome,如果我多次重新加载页面,最终字体文件的加载状态将更改为200 OK,然后键入字体。 这意味着mimetypes有问题,但是为什么在足够的重载后它会自行修复?

同样,Font Awesome可以在不使用Bootstrap的页面上工作,并且文件可以按预期加载。

我在这里想念什么? 任何想法都将不胜感激,因为我被困住了。

最后,我将fonts文件夹添加为web.config的一个例外,就是这样(是的,确实如此简单。叹气):

<location path="fonts">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

在这里留下原始问题以提醒您,当您不太了解自己在做什么时,您很容易会误解事物并感到绝望:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM