簡體   English   中英

如何在 Nginx/Rails 上為 apple-app-site-association 文件設置正確的內容類型

[英]How to set correct content-type for apple-app-site-association file on Nginx/Rails

為了為 iOS 應用程序設置通用鏈接,我創建了一個 apple-app-site-association 文件,並將它放在我的 Rails 應用程序的 /public 目錄中。

我可以將它卷曲到正確的地址,但它返回了錯誤的內容類型。 它返回application/octet-stream ,而不是application/jsonapplication/pkcs7-mime ,如您在此處的響應中所見:

curl -i https://example.com/apple-app-site-association

HTTP/1.1 200 OK
Server: nginx/1.10.1
Content-Type: application/octet-stream
Content-Length: 245
Last-Modified: Mon, 21 Nov 2016 12:45:00 GMT
Strict-Transport-Security: max-age=31536000

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "APPPREFIX.com.mycompany.app",
        "paths": [
          "/home*"
        ]
      }
    ]
  }

我試圖在 nginx 配置中指定一個 Content-Type:

/etc/nginx/sites/sites-available/sitename: 

server {
   ...
   location /apple-app-site-association {
      default_type application/pkcs7-mime;
   }
}

我已保存此更改並重新啟動了 nginx。 這對 curl 的響應沒有任何影響。 我還嘗試了location /public/apple-app-site-association {}和其他一些變體,但沒有效果。

設置 nginx 以提供具有正確內容類型的文件的正確方法是什么?

在 Nginx 中添加:

location ~ /.well-known/apple-app-site-association {
         default_type application/pkcs7-mime;
 }

以上對我不起作用,但我想我會在這里發布以防它對其他人有幫助。 我需要 apple-app-site-association 為 application/json 所以將文件名更改為 apple-app-site-association.json 然后將其添加到 /.well-known 中的 .htaccess

RewriteEngine On
RewriteBase /.well-known/

# iOS
RewriteRule ^apple-app-site-association$ apple-app-site-association.json [NC,L] 

這在 .htaccess 中對我有用:

<FilesMatch "apple-app-site-association">
    ForceType application/json
</FilesMatch>

原來 nginx 配置文件描述了兩台服務器,而我將位置片段添加到了錯誤的一台。

當我將它添加到正確的一個並重新加載 nginx 時,該文件以預期的內容類型返回:

HTTP/1.1 200 OK
Server: nginx/1.10.1
Content-Type: application/pkcs7-mime
Content-Length: 245

{
"applinks": {
"apps": [],
"details": [
  {
    "appID": "APPPREFIX.com.mycompany.app",
    "paths": [
      "/home*"
    ]
  }
]

}

就我而言,我會為“apple-app-site-association”創建一個單獨的 nginx

  1. 將此文件定位到 /usr/share/nginx/html/apple-app-site-association 和 /usr/share/nginx/html/.well-known/apple-app-site-association

  2. 編輯 /etc/nginx/nginx.conf 並設置 default_type application/json;

  3. 就是這樣。

測試它,

  1. curl -i localhost/apple-app-site-association

    HTTP/1.1 200 OK 服務器:nginx/1.19.3 日期:2020 年 10 月 29 日星期四 13:34:00 GMT 內容類型:application/json 內容長度:198 最后修改時間:2020 年 10 月 23 日星期五 13:54: 03 GMT 連接:保持活動 ETag:“5f92e07b-c6”接受范圍:字節

    { "applinks": { "apps": [], "details": [ { "appID": "APPPREFIX.com.mycompany.app", "paths": [ "*" ] } ] } }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM