检测来自服务器端PWA的Web请求

时间:2019-02-27 11:59:10

标签: progressive-web-apps

我正在将PWA支持添加到Web应用程序中。我希望在将应用程序用作PWA而不是在Safari(或其他浏览器)中以老式方式使用时,向iOS界面添加后退按钮。

我知道我可以通过JS检测到-因此我可以在运行时显示/隐藏后退按钮,但是我想知道是否有任何方法可以在服务器端的中进行检测已经( apache / php )。我想还会有更多用例来提供稍有不同的内容。

我想我可以设置一个 cookie ,但是我想确保没有更容易/更易于使用的东西了,例如一些新标题。

1 个答案:

答案 0 :(得分:1)

在此期间,除了cookie之外,还找到了另一种方法。通过服务工作者发送自定义http标头。

app.js:

navigator.serviceWorker.register('/sw.js').then(registration => {
    if(registration.active) {
        const sw = registration.active;
        sw.postMessage({
            'is_pwa': is_pwa()
        });
    }
});

sw.js:

var myHeader = new Headers(event.request.headers);
    if (is_pwa) {
        myHeader.append('ISPWA', is_pwa ? is_pwa : "");
    }
    var config = {
        headers: myHeader
    };
    if(navigator.onLine !== false) {
        event.respondWith(fetch(request).catch(function(error) {
            fetch(request, config).catch(function() {
            [...]

php:

var_dump($_SERVER['HTTP_ISPWA']);