Check server response of

Server response
NS records
Whois domain
Response headers
Request headers
Raw HTML code
301 Moved Permanently - r2h2.com
HTTP Status: 301
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Server: nginx
Date: Tue, 06 May 2025 16:45:19 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://www.decamenu.com
Strict-Transport-Security: max-age=15768000

HTTP Code 301 Moved Permanently

301 Moved Permanently means that the requested resource has been permanently moved to a new URL. All future requests should use the new address.

When is Code 301 used?

  • When changing a website domain
  • When modifying URL structures
  • When setting up redirects for SEO

What does Code 301 mean for the user?

The browser will automatically redirect the user to the new address, and search engines will update their indexes.

200 OK - https://www.decamenu.com
HTTP Status: 200
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
Server: nginx
Date: Tue, 06 May 2025 16:45:20 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Access-Control-Allow-Headers: Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: lerp-buid=8e0e080f-23fa-4127-bc65-2a76a361257a; Path=/; Expires=Tue, 06 May 2025 20:45:20 GMT; SameSite=Strict
Set-Cookie: lerp-sessionid=MTc0NjU0OTkyMHwtOTRFOFd6eUpWVmh0WXc0cldEdHJTeThQbTN4OGY1U09MeXMzYml6NGhTSmpjUmkxd2lIb2xmWDZ2N2l0cHZWZFJkVmR3WWNZc2dUUG1EV01yclFtc1YxcTE0VU5GY1U2WGNsVDhDVmsxUFNrVXRNUUlYU3RGbVc2YUs5fM9NTJcmdgje1EmL_A5fi9OiYeQGavhQCqPp38dUIbmp; Path=/; Expires=Tue, 06 May 2025 20:45:20 GMT; HttpOnly; Secure; SameSite=Strict
X-Delivered-By: backend-2
Content-Security-Policy: worker-src 'unsafe-inline' https://*.r2h2.net https://decamenu.com https://www.decamenu.com; font-src data: https://*.r2h2.net https://decamenu.com https://www.decamenu.com
Service-Worker-Allowed: /

HTTP Code 200 OK

200 OK is a standard successful HTTP server response. It means that the client’s request (e.g., from a browser) was successfully processed, and the server is delivering the requested data.

When is Code 200 used?

  • When loading a web page
  • When successfully receiving an API response
  • When processing a form or another HTTP request

What does Code 200 mean for the user?

The user receives content without errors, and the page or application functions properly. If Code 200 is accompanied by data, the browser or program processes and displays it to the user.

GET / HTTP/1.1
Host: r2h2.com
Accept: */*
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; [email protected])
<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Security-Policy" content="worker-src 'unsafe-inline' https://*.r2h2.net https://decamenu.com https://www.decamenu.com; font-src data: https://*.r2h2.net https://decamenu.com https://www.decamenu.com">
    <link rel="stylesheet" href="/webapps/css/milligram.css">
    <link rel="stylesheet" href="/webapps/css/flag-icon.min.css">
    <link rel="stylesheet" href="/api/c/338259/app/styles.css">
    <link rel="stylesheet" href="/api/c/338259/app/styles_popup.css">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes"/>
    <meta name="theme-color" content="#a26a00"/>
    <link rel="manifest" href="/api/c/338259/app/manifest.json"/>
    <link rel="icon" type="image/png" sizes="16x15" href="/api/c/338259/app/favicon-16x16.png"/>
    <link rel="icon" type="image/png" sizes="32x32" href="/api/c/338259/app/favicon-32x32.png"/>
    <link rel="icon" type="image/png" sizes="96x96" href="/api/c/338259/app/favicon-96x96.png"/>
    <link rel="apple-touch-icon" href="/api/c/338259/app/icon-192.png">
    <title>Menu</title>
    <!-- template for the modal component -->
    <script type="text/x-template" id="modal-template">
        <transition name="modal">
            <div class="modal-mask">
                <div class="modal-wrapper">
                    <div class="modal-container">
                        <div class="modal-header">
                            <slot name="header">
                                &nbsp;
                            </slot>
                        </div>
                        <div class="modal-body">
                            <slot name="body">
                                default body
                            </slot>
                        </div>
                        <div class="modal-footer">
                            <slot name="footer">
                                <button class="modal-default-button popup-close" @click="$emit('close')">
                                    Close
                                </button>
                            </slot>
                        </div>
                    </div>
                </div>
            </div>
        </transition>
    </script>
</head>
<body>
<div id="app" class="flexcontainer">

    <header>
        <div v-if="currentCardIndex==-1">
            <div class="left-right-container">
                <div class="left">
                    <!--                    <img class="aux auxleft" src="/api/c/338259/app/menu.png"-->
                    <!--                         @click="showAuxMenu=!showAuxMenu;"/>-->
                </div>
                <div class="fill-remaining-space">
                    <div class="social">
                        <!--                <img class="social" src="/api/c/338259/app/wifi.png" @click="showTopInfo=!showTopInfo;">-->
                        <img class="social" src="/api/c/338259/app/wifi.png"
                             @click="document.body.classList.add('modal-open'); showModalWifi=true;">
<!--                        <a href="https://www.facebook.com" target="_blank"><img class="social" src="/api/c/338259/app/facebook.png"></a>-->
                        <a href="https://www.instagram.com/deutsches_cafe_gran_canaria" target="_blank">
                            <img class="social" src="/api/c/338259/app/instagram.png">
                        </a>
                        <a href="https://goo.gl/maps/bXcvJ1AMAB5WQjbw6" target="_blank">
                            <img class="social" src="/api/c/338259/app/googlemaps.png">
                        </a>
                        <a href="https://www.tripadvisor.com/Restaurant_Review-g562819-d13137989-Reviews-Deutsche_Cafe_Bar-Playa_del_Ingles_Maspalomas_Gran_Canaria_Canary_Islands.html"
                           target="_blank">
                            <img class="social" src="/api/c/338259/app/tripadvisor.png">
                        </a>
                    </div>
                </div>
                <div class="right">
                    &nbsp;
                </div>
            </div>
            <div v-if="showTopInfo==true">
                <div class="topinfo" @click="showTopInfo=!showTopInfo;">
                    SSID: xyzabc - Password: test123
                </div>
            </div>
            <div v-if="showAuxMenu==true">
                <div class="aux" @click="showAuxMenu=!showAuxMenu;">
                    <a class="aux" href="https://www.startpage.com">Opening hours</a><br/>
                    <a class="aux" href="https://www.startpage.com">Contact</a><br/>
                    <a class="aux" href="https://www.startpage.com">Legal Notice</a><br/>
                </div>
            </div>

            <!-- === === === === Wifi popup dialog === === === === -->
            <modal v-if="showModalWifi" @close="showModalWifi=false; document.body.classList.remove('modal-open')">
                <div slot="body" v-html="wifiMessage"></div>
                <div slot="footer">
                    <button class="modal-default-button popup-close"
                            @click="showModalWifi=false; document.body.classList.remove('modal-open')">
                        {{closeText}}
                    </button>
                </div>
            </modal>
        </div>
        <div v-else>
            <div class="menucardheader">
                {{menuCards[currentCardIndex].title}}
            </div>
        </div>
    </header>

    <main>
        <div class="content">
            <!-- === === === === LANDING PAGE === === === === -->
            <div v-if="currentCardIndex==-1">
                <img class="mainLogo" src="/api/c/338259/app/logo_main.png"/>
                <div class="centerOuter">
                    <div class="centerInner">
                        <div v-for="(entry, index) in menuCards">
                            <button v-on:click="currentCardIndex=index;showAuxMenu=false"
                                    class="menu main button-clear">{{entry.title}}
                            </button>
                        </div>
                    </div>
                </div>
            </div>
            <!-- === === === === MENU CARD PAGE === === === === -->
            <div v-else>
                <div v-if="menuCards[currentCardIndex].type=='standard'">
                    <div class="container">
                        <div v-for="(entry, index) in menuCards[currentCardIndex].entries">
                            <div class="row menu2" v-if="entry.type=='item'"
                                 @click="modalIndex=index; document.body.classList.add('modal-open'); showModal=true">
                                <div class="column column-10 menuIndex">
                                    {{entry.menuNumber}}
                                </div>
                                <div class="column menuName">
                                    {{entry.title}}
                                    <div class="menuDescription" v-if="entry.description!=null"
                                         v-html="entry.description"></div>
                                    <div class="menuDescriptionAdditional" v-if="showFullDescription==true">
                                        ...Allergen info here...
                                    </div>
                                </div>
                                <div class="column column-25 price">
                                    {{entry.price}}
                                </div>
                            </div>
                            <div class="row menu" v-if="entry.type=='heading'">
                                <div class="row menu">
                                    <div class="column column-10 menuIndex">
                                        &nbsp;
                                    </div>
                                    <div class="column menuCategory">
                                        <br/>
                                        <h2><span>{{entry.title}}</span></h2>
                                        <div class="menuDescription2" v-if="entry.description!=null"
                                             v-html="entry.description"></div>
                                    </div>
                                    <div class="column column-25">
                                        &nbsp;
                                    </div>
                                </div>
                            </div>
                            <div class="row menu" v-if="entry.type=='text'">
                                <div class="row menu">
                                    <div class="column column-10 menuIndex">
                                        &nbsp;
                                    </div>
                                    <div class="column menuDescription2" v-html="entry.description"></div>
                                    <div class="column column-25">
                                        &nbsp;
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div v-else>
                    <div class="container">
                        <div v-for="(entry, index) in menuCards[currentCardIndex].entries">
                            <div class="menuNameSpecial" v-if="entry.title!=null">
                                {{entry.title}}
                            </div>
                            <div class="menuDescriptionSpecial" v-if="entry.description!=null"
                                 v-html="entry.description">
                            </div>
                            <div class="priceSpecial" v-if="entry.price!=null">
                                {{entry.price}}
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!-- === === === === END === === === === -->
        </div>

    </main>

    <footer>
        <div v-if="currentCardIndex==-1">
            <div class="centerOuter">
                <div class="centerInner">
                    <button @click="loadData('de')" class="flag-icon flag-icon-de button-clear footerelement"></button>
                    <button @click="loadData('es')" class="flag-icon flag-icon-es button-clear footerelement"></button>
                    <button @click="loadData('en')" class="flag-icon flag-icon-gb button-clear footerelement"></button>
                    <!--
                    <button v-on:click="loadData('no')" class="flag-icon flag-icon-no button-clear small"></button>
                    -->
                </div>
            </div>
        </div>
        <div v-else>
            <button @click="currentCardIndex=-1" class="button-clear bottom">{{backText}}</button>
        </div>
    </footer>

    <!-- Menu popup dialog -->
    <modal v-if="showModal" @close="showModal=false; document.body.classList.remove('modal-open')">
        <div slot="header">
            <h3>{{menuCards[currentCardIndex].entries[modalIndex].title}}</h3>
            {{menuCards[currentCardIndex].entries[modalIndex].description}}
        </div>
        <div class="popup-wrapper" slot="body">
            <div class="popup-image" v-if="menuCards[currentCardIndex].entries[modalIndex].imageName!=null">
                <img v-bind:src="'/api/c/338259/' + menuCards[currentCardIndex].entries[modalIndex].imageName">
            </div>
            <div class="popup-content">
                <span v-html="menuCards[currentCardIndex].entries[modalIndex].longDescription"></span>
                <br/><b>{{priceText}}</b><br/>{{menuCards[currentCardIndex].entries[modalIndex].price}}
            </div>
            <div class="popup-content-lower"
                 v-if="menuCards[currentCardIndex].entries[modalIndex].recommendations!=null">
                <b>{{recommendationText}}</b><br/>
                <span v-html="menuCards[currentCardIndex].entries[modalIndex].recommendations"></span>
            </div>
            <div class="popup-footer-allergens" v-if="menuCards[currentCardIndex].entries[modalIndex].allergens!=null">
                <b>{{allergenText}}</b><br/>
                <span v-for="(aentry, aindex) in menuCards[currentCardIndex].entries[modalIndex].allergens" class="tag">
                    {{aentry}}&nbsp;
                </span>
            </div>
            <div class="popup-footer-colorants" v-if="menuCards[currentCardIndex].entries[modalIndex].colorants!=null">
                <b>{{colorantText}}</b><br/>
                <span v-for="(aentry, aindex) in menuCards[currentCardIndex].entries[modalIndex].colorants" class="tag">
                    {{aentry}}&nbsp;
                </span>
            </div>
            <div class="popup-footer-additives" v-if="menuCards[currentCardIndex].entries[modalIndex].additives!=null">
                <b>{{additiveText}}</b><br/>
                <span v-for="(aentry, aindex) in menuCards[currentCardIndex].entries[modalIndex].additives" class="tag">
                    {{aentry}}&nbsp;
                </span>
            </div>
        </div>
        <div slot="footer">
            <button class="modal-default-button popup-close"
                    @click="showModal=false; document.body.classList.remove('modal-open')">
                {{closeText}}
            </button>
        </div>
    </modal>


</div>
<script>
    if ("serviceWorker" in navigator) { // && window.location.port !== "3000"
        window.addEventListener("load", function () {
            navigator.serviceWorker.register("/api/c/338259/app/service-worker.js", {scope: '/'})
                .then(function (registration) {
                    console.log('Service worker initialized', registration.scope);
                }, function (err) {
                    console.log('Service worker failed to register.', err);
                });
        });
    }
</script>
<script src="/webapps/js/vue.min.js"></script>
<script>
    Vue.component("modal", {template: "#modal-template"}); // register modal component
    const vm = new Vue({
        el: '#app',
        data: {
            showModalWifi: false,
            showModal: false,
            modalIndex: -1,
            showAuxMenu: false,
            showTopInfo: false,
            showFullDescription: false,
            currentCardIndex: -1,
            backText: [],
            priceText: [],
            closeText: [],
            menuCards: [],
            wifiMessage: "",
            backTexts: {
                es: "hacia atrás",
                en: "Back to menu",
                de: "Zurück zum Menü",
                no: "Back to menu",
            },
            closeTexts: {
                es: "Cerrar",
                en: "Close",
                de: "Schließen",
                no: "Close",
            },
            priceTexts: {
                es: "Precio",
                en: "Price",
                de: "Preis",
                no: "Price",
            },
            recommendationTexts: {
                es: "Respetos:",
                en: "Recommendations:",
                de: "Empfehlungen:",
                no: "Recommendations:",
            },
            allergenTexts: {
                es: "Alergenos",
                en: "Allergens",
                de: "Allergene",
                no: "Allergens",
            },
            colorantTexts: {
                es: "Colorantes",
                en: "Colorants",
                de: "Farbstoffe",
                no: "Colorants",
            },
            additiveTexts: {
                es: "Aditivos",
                en: "Additional information",
                de: "Zusatzstoffe",
                no: "Additional information",
            }
        },
        methods: {
            loadData: function (lang) {
                var self = this;
                fetch('/api/selfmenu/active-cards/338259/' + lang)
                    .then(function (response) {
                        return response.json();
                    })
                    .then(function (txt) {
                        self.menuCards = txt;
                        self.backText = self.backTexts[lang];
                        self.closeText = self.closeTexts[lang];
                        self.priceText = self.priceTexts[lang];
                        self.recommendationText = self.recommendationTexts[lang];
                        self.allergenText = self.allergenTexts[lang];
                        self.colorantText = self.colorantTexts[lang];
                        self.additiveText = self.additiveTexts[lang];
                    });
                fetch('/api/c/338259/app/' + lang + "/wifi")
                    .then(function (response) {
                        return response.text();
                    })
                    .then(function (txt) {
                        self.wifiMessage = txt;
                    });
            }
        }
    });
    vm.loadData("es")
</script>
<noscript>
    Sorry, this page needs JavaScript to work properly :-(
</noscript>
</body>
</html>
                               

Whois info of domain

Domain Name: R2H2.COM
Registry Domain ID: 96894972_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.ascio.com
Registrar URL: http://www.ascio.com
Updated Date: 2025-04-17T07:33:02Z
Creation Date: 2003-04-16T18:15:08Z
Registry Expiry Date: 2026-04-16T18:15:08Z
Registrar: Ascio Technologies, Inc. Danmark - Filial af Ascio technologies, Inc. USA
Registrar IANA ID: 106
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +1.4165350123
Domain Status: ok https://icann.org/epp#ok
Name Server: ROOT-DNS.NETCUP.NET
Name Server: SECOND-DNS.NETCUP.NET
Name Server: THIRD-DNS.NETCUP.NET
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2025-05-06T16:45:00Z <<<
For more information on Whois status codes, please visit https://icann.org/epp
NOTICE: The expiration date displayed in this record is the date the
TERMS OF USE: You are not authorized to access or query our Whois
by the following terms of use: You agree that you may use this Data only
to: (1) allow, enable, or otherwise support the transmission of mass