13

我已将该apple-app-site-association文件添加到网站的根目录,但 IIS 未提供该文件。

使服务器在没有文件扩展名的情况下提供此特定文件的最佳方法是什么?web.config 中有没有办法明确地说“提供这个文件”?

4

4 回答 4

30

我遇到了同样的问题,发现了这个惊人的帖子

从 IIS 提供 apple-app-site-association IIS 仅提供由文件扩展名定义的已知类型的文件。由于 apple-app-site-association 不包含文件扩展名,因此当我尝试使用浏览器打开 IIS 时,它会引发 404 错误。我通过在 web.config 文件中添加 mimeMap 来解决此问题:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <!-- required for apple-app-site-association: -->
      <mimeMap fileExtension="." mimeType="application/json" />
    </staticContent>
  </system.webServer>
</configuration>
于 2017-07-06T19:50:11.403 回答
2

不是我首选的解决方案,但在 DeyaEldeen 的评论中,我满足我们许多需求的方式是使用元标记方法(在<head>页面的标记内):

<meta name="apple-itunes-app" content="app-id=5555555555">

这样一来,每当 iOS 上的任何用户浏览该网站时,他们都会在页面顶部看到“在应用商店中查看”弹出窗口。一旦他们按下弹出窗口,他们就会被定向到应用商店。

请参阅Apple 的 Smart App Banners 文档

希望这可以帮助一些有类似需求的人。

于 2017-03-06T16:00:28.180 回答
1

正如这个答案所解释的,出于安全原因,IIS 仅提供已知文件类型,并使用文件扩展名来推断文件类型。您可以为无扩展名的文件声明一种文件类型,以便为它们提供服务。

但这会导致服务器提供任何无扩展名的文件,这可能会导致意外文件被提供给任何人,包括探测敏感文件的机器人被错误保护。

先前链接的答案解释的解决方案可以仅限于该苹果文件。最好限制一下。为此使用一个location节点。
顺便说一句,如果您的默认设置不适合,请考虑调整此文件的缓存策略,特别是如果您的服务器位于 CDN 后面。

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  ...

  <location path="apple-app-site-association">
    <system.webServer>
      <staticContent>
        <mimeMap fileExtension="." mimeType="application/json" />
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="08:00:00" cacheControlCustom="public" />
      </staticContent>
    </system.webServer>
  </location>

  ...

</configuration>
于 2021-04-09T14:29:42.423 回答
0

为什么

出于安全原因,IIS 不允许浏览任何文件。成像,例如,web.config

如何

最快的方法是通过扩展名将文件类型添加到已知类型:

Open IIS Manager -> Sites -> Your Web Site -> MIME TYPES -> Add...
    File name extension=.
    MIME type=application/json
-> OK

现在它起作用了。

于 2018-09-24T14:09:50.483 回答