【问题标题】:Web manifest is not accessible after forcing SSL强制 SSL 后无法访问 Web 清单
【发布时间】:2018-12-30 00:12:44
【问题描述】:

我最近开始通过 .htaccess 文件强制我的 React PWA 的 URL 使用 HTTPS 和非 WWW 表单,但这显然会阻止某些应用程序(例如 pwabuilder.com)访问应用程序的公共文件,例如它的网络清单。也就是说,某些应用程序(例如 Chrome 移动版)允许我访问清单。我怎样才能让它始终可以访问?

我的 .htaccess 文件结构如下:

<IfModule mod_rewrite.c> 
  RewriteEngine On
  RewriteCond %{HTTPS} off [OR]
  RewriteCond %{HTTP_HOST} ^www\. [NC]
  RewriteRule ^ https://aurora.igloo.ooo%{REQUEST_URI} [L,NE,R=301]
</IfModule>
<IfModule mod_rewrite.c> 
  RewriteEngine On  
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
  RewriteRule ^ - [L]

  RewriteRule ^ /index.html [L]
</IfModule>

pwabuilder.com 无法访问的文件托管在https://aurora.igloo.ooo/manifest.json

【问题讨论】:

  • 您能否分享您的 .htaccess 以及无法访问的公共文件之一的确切路径?
  • 我用 .htaccess 文件编辑了我的问题
  • 您的.htaccess 文件似乎没有任何“错误”可以阻止这些应用程序访问这些文件。正如您可以使用任何浏览器访问该文件一样,其他应用程序也应该如此。 ...除非这些其他应用程序没有请求规范 URL (HTTPS + www) 并且不遵循重定向?!您应该检查您的服务器的访问日志以查看哪些请求正在访问您的服务器以及您的服务器如何响应。这些其他应用程序不会给您带来更有意义的错误吗?
  • https://aurora.igloo.ooo/manifest.json 的响应来自“nginx/1.2.1”,而不是 Apache?
  • @David 是的 - 我真的只是想引起 OP 的注意,因为他们在问题中没有提到这一点。如果 nginx 被用作代理,那么它可能会改变问题的焦点。

标签: reactjs apache .htaccess progressive-web-apps manifest.json


【解决方案1】:

aurora.igloo.ooo 有一个奇怪的服务器并阻止一些请求访问manifest.json
当我第一次点击你的链接时,我看到了manifest.json。然后我通过删除文件路径调用主页,在浏览器历史记录中单击返回以再次查看清单并显示(使用 http-response-code 200):

在网络控制台中查看它仍然变得更加混乱,但也导致了错误的根源:

它抱怨缺少启用 javascript,所以他们用 javascript 做了一些奇怪的事情,可能还有一些隐藏的重定向(否则响应代码将是 3xx)。也许他们不希望从外部访问清单,并且它没有正确配置并且在某些情况下可以看到。

我没有针对您的问题的快速解决方案,但很明显有些客户端无法访问清单,您必须寻找其他解决方案。如果您为aurora.igloo.ooo 工作,您必须与前端开发人员和/或服务器管理员交谈以更改某些内容,否则您必须提供自己的清单文件。他们也有可能为问题提供解决方案,但为此您必须访问一些常见问题解答或知识库,或者您必须联系支持人员。

【讨论】:

    【解决方案2】:

    阅读了桌面上的清单文件后,它会强制用户体验另一种用户体验,并且至少在 chrome 中会更改整个窗口。虽然这对于某些特殊页面可能很酷,但也可能会造成混淆。
    以下是我读到的三个链接:

    1. https://developers.google.com/web/fundamentals/web-app-manifest/
    2. https://developers.google.com/web/fundamentals/app-install-banners/
    3. https://developers.google.com/web/progressive-web-apps/desktop

    我的假设是 aurora.igloo.ooo 永远不想通过在桌面上显示一个特殊的应用程序窗口来打破普通的浏览体验,因此它们会阻止清单在桌面上正确加载。
    我只是第一次阅读它,所以我理解的技术行为可能是错误的,或者它不是完整的技术背景。
    至少我得到的印象是,如果一个网站作为 web-app 运行,在桌面上应该考虑两次。如果您仍然选择此解决方案,您可能仍需要找到有关它的更多信息,但我发布的链接可能是一个好的开始,并提供更多详细信息和链接。

    决定不使用桌面网络应用的另一个原因可能是浏览器之间的兼容性,因为对技术选项的支持非常不同:
    https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json#Browser_compatibility

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      相关资源
      最近更新 更多