【问题标题】:What web.config setting will allow apple-app-site-association to be served?什么 web.config 设置将允许提供 apple-app-site-association?
【发布时间】:2017-01-13 15:59:32
【问题描述】:

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

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

【问题讨论】:

  • 如果您解决了这个问题,请告诉我们如何解决。

标签: iis web-config apple-app-site-associate


【解决方案1】:

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

从 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>

【讨论】:

  • 最好将此system.webServer 节点放在&lt;location path="apple-app-site-association"&gt; 节点下,以将其限制在此文件中,并避免提供任何其他无扩展名的文件。
【解决方案2】:

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

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

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

Apple's docs for Smart App Banners

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

【讨论】:

    【解决方案3】:

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

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

    之前链接的answer 解释的解决方案可以仅限于该苹果文件。最好限制一下。为此使用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>
    

    【讨论】:

    • apple-app-site-association 文件位于.well-known 文件夹中时,您将如何处理?我目前正面临这个问题,因为我不能放弃.well-known/apple-app-site-association的路径,这里的点似乎是IIS服务器给出错误
    • 您可以将 web.config 文件拖放到您喜欢的任何文件夹中。所以就拿上面的例子来说,没有带三个点的行,把它放在.well-known文件夹内的web.config文件中。这个麻烦已经有了自己的question and answer
    • 感谢您的建议!我确实让它与 .well-known 目录中的 web.config 文件一起工作。非常感谢:)
    【解决方案4】:

    为什么

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

    如何

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

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

    现在可以了。

    【讨论】:

    • 确实很完美,是 web.config 方式(被要求)的好选择。
    猜你喜欢
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2017-02-16
    • 2018-01-05
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多