Apache対lighthttpd:MIMEタイプのさまざまな動作

Apache対lighthttpd:MIMEタイプのさまざまな動作

私はAppleデバイス用の自動化されたVPN設定ポータルであるPythonでアプリケーションを作成しました。

私を迷惑にするのは、テストサーバーと本番サーバーの動作の違いです。前者はを使用し、Apache後者はを使用しますlighthttpd

lighhttpdたとえば、ファイルが.mobileconfig開いて「実行」されると、Apacheでは発生しないSysPrefsが自動的に開きます。

私はlighhtpdrightの定義がはるかに緩いことを知りました。しかし、現在の問題は、Safariがファイルを正しくContent-Typeロードして「自動実行」しているのですが。.mobileconfiglighthttpdApache

私をより迷惑にすることは、両方のサーバーでそのコンテンツがmime.type次のように正しく定義されていることです。

lighthttpd.conf

$HTTP["url"] =~ "\.mobileconfig$" {
    setenv.add-response-header = ( "Content-Disposition" => "attachment" )
    mimetype.assign = (".mobileconfig" => "application/x-apple-aspen-config",
                    "" => "application/octet-stream")
}

Apacheと同様に:

dovpn.conf(仮想ホスト)

AddType application/x-apple-aspen-config .mobileconfig

違いの最初の手がかりは実際にのadd-response-header指示から来たようですlighthttpd

生成されたHTMLには次のものがあります。

a download="profile.mobileconfig" href="../upload/8bd16b26-1473-4994-9803-8268a372cd0d.mobileconfig" type="application/octet-stream">Download automatic profile/a

Javascriptを介して自動的にファイルをダウンロードしました。

//If in Safari - download via virtual link click
if (window.downloadFile.isSafari) {
    //Creating new link node.
    var link = document.createElement('a');
    link.href = sUrl;
    if (link.download !== undefined) {
        //Set HTML5 download attribute. This will prevent file from opening if supported.
        var fileName = sUrl.substring(sUrl.lastIndexOf('/') + 1, sUrl.length);
        link.download = fileName;
    }
    //Dispatching click event.
    if (document.createEvent) {
        var e = document.createEvent('MouseEvents');
        e.initEvent('click', true, true);
        link.dispatchEvent(e);
        return true;
    }
}

生成されたページのコンテンツにはContent-Typeのみがあります。

Content-Type: text/html\n\n

これはApacheとlighthttpdの両方に当てはまります。ネットワークを調べたところ、.NETを介してContent-Typeへの明確な変更は見つかりませんでしたlighthttpd

setenv.add-response-headerApacheを使用して同様の機能を複製できますか?

Apacheホストに追加しようとしました。

<Files "*.mobileconfig">
      Header set Content-Disposition attachment
</Files>

そして

SetEnvIf Request_URI "\.mobileconfig$" change_header
Header set Content-Disposition attachment env=change_header

そして

SetEnvIf Request_URI "\.mobileconfig$" change_header
Header always add "Content-Disposition" "attachment" env=change_header

そして

<Files "*.mobileconfig">
    Header append Content-Disposition attachment
</Files>

また、次のように実際のディレクトリに.htaccessファイルを作成してみました。

<IfModule mod_headers.c>
    <FilesMatch "\.mobileconfig$">
        ForceType application/octet-stream
        Header append Content-Disposition "attachment"
        Allow from all
    </FilesMatch>
</IfModule>

そして

<IfModule mod_headers.c>
    <FilesMatch "\.mobileconfig$">
        ForceType application/octet-stream
        Header add Content-Disposition "attachment"
        Allow from all
    </FilesMatch>
</IfModule>

他にも両方の場合attachmentとも"attachment"

mod_headersはApache / Debian 9でデフォルトで有効になっており、これらの選択肢のどれも機能しません。

実際、私が覚えているのはlighthttpdHTTPとApacheHTTPSを使うことだけです。 HTTPSを使用してlighthttpdをテストしましたが、HTTPSでも動作しますが、Apacheはそうではありません。

curl -k -I https://localhost/cgi-bin/vpn.pylighthttpd サーバーの出力:

HTTP/1.1 200 OK
Content type: text/html
Content-Length: 331
Date: Thu, 01 Jun 2017 09:03:26 GMT
Server: lighttpd/1.4.45

curl -k -I https://localhost/cgi-bin/vpn.pyApacheサーバーの出力:

HTTP/1.1 200 OK
Date: Thu, 01 Jun 2017 09:05:25 GMT
Server: Apache
Vary: Accept-Encoding
X-Frame-Options: sameorigin
Content-Type: text/html; charset=UTF-8

さらに、これはApacheでも同様です。

$curl -k -I https://localhost/download/xxx.mobileconfig
HTTP/1.1 200 OK
Date: Thu, 01 Jun 2017 09:13:35 GMT
Server: Apache
Last-Modified: Thu, 01 Jun 2017 03:08:57 GMT
ETag: "1f3b-550dd5b89d8df"
Accept-Ranges: bytes
Content-Length: 7995
X-Frame-Options: sameorigin
Content-Disposition: attachment
Content-Type: application/x-apple-aspen-config

Safariを使用 - >開発 - > Webチェッカーを表示 - >デバッガ - >ホームクリック - >カールにコピーのみ「カール」を返します。https://xxxx/cgi-bin/vpn.py貼り付けるときは「-Xnull」です。

無効にしようとしましたが、X-Frame-Options: "sameorigin"違いはありませんでした。 (それが長い可能性であることを知っています。)

ベストアンサー1

.htaccessこのファイルを使用すると、ヘッダーにContent-Dispositionを追加する問題が解決されるようです。

ただし、機能レプリケーションの問題とデバッグとテストの複雑さが追加されることには他にも説明があるようです。

セキュリティ上の理由から、最新のベータ版と最新バージョンのSierraアップデートファイルの両方が.mobileconfigSafariの「安全な」ファイルを開くリストから削除されたようです。

昨日(またはちょうど)仕事でそして今日家でMacOSを更新しましたが、もはや本番.mobileconfigシステムまたはプレプロダクションシステムでファイルを自動的に開くことはできません。

.mobileconfig私はiPhoneをiOS 10.3.3ベータ版にアップデートしました。このファイルをクリックすると、新しい警告が表示されます。

ウェブサイトでプロフィールを表示するための設定を開こうとしています。これを許可しますか?
無視 - 許可

おすすめ記事