CINXE.COM
403 Forbidden - HackMD
<!DOCTYPE html> <html lang="dev"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="mobile-web-app-capable" content="yes"> <meta property="og:image" content="https://hackmd.io/images/media/HackMD-og.jpg"> <meta property="og:image:alt" content="HackMD - Collaborative Markdown Knowledge Base"> <meta property="fb:app_id" content="1436904003272070"> <meta name="csrf-token" content="TUgeZbeV-OHMgVzQwGd3i2Zmp85V8gro0pN0"> <title>403 Forbidden - HackMD</title> <link rel="icon" type="image/png" href="https://hackmd.io/favicon.png"> <link rel="apple-touch-icon" href="https://hackmd.io/apple-touch-icon.png"> <!-- Google Tag Manager --> <script nonce="6d764049-e711-4d96-a7a4-ca605fc68ea3">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KLW9Z3');</script> <!-- End Google Tag Manager --> <link href="https://assets.hackmd.io/build/font-vendor.ea8218d7d4f468b2c430.css" rel="stylesheet"><link href="https://assets.hackmd.io/build/common-vendor.0a08ae20e14fefe857eb.css" rel="stylesheet"><link href="https://assets.hackmd.io/build/error-vendor.d05131935c3a4ffdf614.css" rel="stylesheet"><link href="https://assets.hackmd.io/build/error.b1c569aa3a13c883eb8b.css" rel="stylesheet"> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" integrity="sha256-3Jy/GbSLrg0o9y5Z5n1uw0qxZECH7C6OQpVBgNFYa0g=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js" integrity="sha256-g6iAfvZp+nDQ2TdTR/VVKJf3bGro4ub5fvWSWVRi2NE=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.9/es5-shim.min.js" integrity="sha256-8E4Is26QH0bD52WoQpcB+R/tcWQtpzlCojrybUd7Mxo=" crossorigin="anonymous"></script> <![endif]--> <script defer data-domain="hackmd.io" src="https://plausible.io/js/script.js"></script> <script nonce="6d764049-e711-4d96-a7a4-ca605fc68ea3"> window.plausible = window.plausible || function() { (window.plausible.q = window.plausible.q || []).push(arguments); } const keyboardWhiteList = ['a', 'span', 'button'] function getTaggedEventAttributes (e) { const eventAttrs = { name: null, props: {} } if (!e || !e.classList) return eventAttrs const psEvent = /plausible-event-(.+)(=|--)(.+)/ for (const className of [...e.classList]) { const [, key, , val] = className.match(psEvent) || [] if (!key || !val) continue const value = val.replace(/\+/g, ' ') switch (key.toLowerCase()) { case 'name': eventAttrs.name = value break default: eventAttrs.props[key] = value break } } return eventAttrs } function isLocal () { return /^localhost$|^127(\.[0-9]+){0,2}\.[0-9]+$|^\[::1?\]$/.test(location.hostname) || location.protocol === 'file:' } function isAutomation () { return Boolean(window._phantom || window.__nightmare || window.navigator.webdriver || window.Cypress) } function shouldIgnore () { return isLocal() || isAutomation() || window.localStorage.getItem('plausible_ignore') === 'true' } function handler (e) { if (!window.plausible) return if (!e.target || !('className' in e.target)) return const ele = e.target const eventAttrs = getTaggedEventAttributes(ele) if (!eventAttrs.name) return if (ele?.href) eventAttrs.props.url = ele.href if (shouldIgnore()) { if (window.debug) logDebugEventMsg(eventAttrs) return } window.plausible(eventAttrs.name, { props: eventAttrs.props }) } function logDebugEventMsg (eventAttrs) { console.warn( `Ignoring Event: "${eventAttrs.name}"`, eventAttrs, ) } function keydownHandler (e) { if (e.key !== 'Enter') return if (e.target.nodeName.toLowerCase() === 'input') { switch (e.target.type.toLowerCase()) { case 'submit': case 'button': case 'reset': case 'checkbox': case 'radio': case 'file': case 'image': case 'color': break default: return } } else if (!keyboardWhiteList.includes(e.target.nodeName.toLowerCase())) { return } handler(e) } document.addEventListener('mousedown', handler) document.addEventListener('keydown', keydownHandler) </script> </head> <body> <nav class="navbar navbar-default navbar-fixed-top unselectable hidden-print font-brand-headline"> <!-- Brand and toggle get grouped for better mobile display --> <div class="navbar-header"> <a class="navbar-brand pull-left !text-icon-emphasize" style="float: left;" href="https://hackmd.io/"> <img class="w-6.5 h-auto !inline-block" src="https://hackmd.io/Logo.svg"> HackMD </a> </div> </nav> <div class="container-fluid hmd-text-center"> <div class="vertical-center-row"> <h1>403 Forbidden</h1> <div class="blue-icon"> <img src="https://hackmd.io/forbidden.svg"> </div> <p> You don't have permission to access this resource. <br> Sign in or head back to home. </p> <div class="action"> <a type="button" class="btn btn-lg btn-primary ui-home" href="https://hackmd.io/">Home</a> <a type="button" class="btn btn-lg btn-success ui-signin" data-toggle="modal" data-target=".signin-modal">Sign in</a> </div> </div> </div> <!-- signin modal --> <div class="modal fade signin-modal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="margin-top: 10px; right: 20px; position: absolute;"><span aria-hidden="true">×</span></button> <h3>Sign in</h3> <form data-toggle="validator" role="form" class="form-horizontal" method="post" enctype="application/x-www-form-urlencoded" id="signin-form"> <div class="hmd-dn"><input type="hidden" name="_csrf" value="TUgeZbeV-OHMgVzQwGd3i2Zmp85V8gro0pN0"></div> <div class="hmd-dn"><input type="hidden" name="create_team" value="false"></div> <div class="hmd-dn"><input type="hidden" name="create_paid_team" value="false"></div> <div class="form-group "> <label for="email" class="control-label">Email</label> <label for="inputEmail" class="control-label pull-right errors"> </label> <span class="help-block control-label with-errors pull-right" style="margin-top: 14px"></span> <div class="input-block"> <input type="email" class="form-control" name="email" placeholder="Your email" required autocomplete="email"> <span class="error-sign"></span> </div> </div> <div class="form-group "> <label for="password" class="control-label">Password</label> <label for="inputPassword" class="control-label pull-right errors"> </label> <span class="help-block control-label with-errors pull-right" style="margin-top: 14px"></span> <div class="input-block"> <input type="password" class="form-control" name="password" placeholder="Your password" required autocomplete="current-password" maxlength="128"> <span class="error-sign"></span> <span class="control-label pull-right !text-normal !leading-normal !font-normal !mt-1.5"><a href="https://hackmd.io/settings/forgotPassword" style="text-decoration: underline;">Forgot password</a></span> </div> </div> <div style="text-align: center; padding-top: 15px; margin-bottom: 0px;"> <div hidden id="hmd-captcha" data-provider="" data-captcha-data="" class="flex justify-center" ></div> <input type="submit" class="neo-btn neo-btn-primary !justify-center !py-3.5 !mx-auto" formaction="https://hackmd.io/login" value="Sign in"> </div> </form> <p class="separator">or</p> <p>By clicking below, you agree to our <a href="https://hackmd.io/s/terms" target="_blank">terms of service</a>.</p> <script id="gsi-client" src="https://accounts.google.com/gsi/client" async defer nonce="6d764049-e711-4d96-a7a4-ca605fc68ea3"></script> <script nonce="6d764049-e711-4d96-a7a4-ca605fc68ea3"> function handleCredentialResponse(response) { const form = document.getElementById('sign-in-with-google-form') form.children.credential.value = response.credential form.children.method.value = location.href.toLowerCase() === 'https://hackmd.io/settings#general' ? 'merge' : 'login' form.submit() } var GSI_READY = new Promise(function (resolve) { function initialize () { google.accounts.id.initialize({ client_id: '911617723593-drikdibvvn63slfd6kbqigo8ql1no55s.apps.googleusercontent.com', callback: handleCredentialResponse }) const loginPath = '/login' const joinPath = '/join' const renderButton = function () { google.accounts.id.renderButton( document.getElementById('sign-in-with-google-button'), { type: 'standard', width: 250 } ) } if (location.pathname.toLowerCase() === loginPath || location.pathname.toLowerCase() === joinPath) { renderButton() } else { $('.signin-modal').one('shown.bs.modal', function () { renderButton() }) } resolve() } window.addEventListener('load', function () { initialize() }) }) </script> <form class="hidden" id="sign-in-with-google-form" action="/auth/google" method="post"> <input type="hidden" name="credential"> <input type="hidden" name="method"> </form> <div class="social-buttons-container"> <div id="sign-in-with-google-button"></div> <a href="https://hackmd.io/auth/facebook" class="btn btn-lg btn-block btn-social btn-facebook"> <i class="fa fa-facebook"></i> Sign in via Facebook </a> <a href="https://hackmd.io/auth/twitter" class="btn btn-lg btn-block btn-social btn-twitter"> <i class="fa fa-twitter"></i> Sign in via Twitter </a> <a href="https://hackmd.io/auth/github" class="btn btn-lg btn-block btn-social btn-github"> <i class="fa fa-github"></i> Sign in via GitHub </a> <a href="https://hackmd.io/auth/dropbox" class="btn btn-lg btn-block btn-social btn-dropbox"> <i class="fa fa-dropbox"></i> Sign in via Dropbox </a> <a href="#" class="bg-white btn btn-block btn-social btn-web3 bg-gray-800 hocus:bg-[#2b2b2b] text-white hocus:text-white"> <img src="https://hackmd.io/images/wallet.svg" style="max-height: 20px; margin-top: 8px; margin-left: 6px; border: none;"> <span class="sign-in-wallet-text"> Sign in with Wallet </span> <div class="inline-flex items-center justify-between w-full hidden web3-wallet-info"> <span> Wallet ( <span class="web3-wallet-address"></span> ) </span> <i class="fa fa-arrow-right" aria-hidden="true"></i> </div> </a> <small class="web3-wallet-info hidden text-left hocus:text-white underline hocus:underline block pt-2 ui-disconnect-connected-wallets text-gray-600 cursor-pointer"> Connect another wallet </small> </div> <div > <p>New to HackMD? <a href="https://hackmd.io/join" class="plausible-event-name=LoginModalSignUp">Sign up</a></p> </div> </div> </div> </div> <script src="https://www.googletagmanager.com/gtag/js?id=G-NGVZMM6DR6"></script> <script nonce="6d764049-e711-4d96-a7a4-ca605fc68ea3"> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); let userid = (document.cookie.match('(^|; )userid=([^;]*)')||0)[2]; gtag('config', 'G-NGVZMM6DR6', {'user_id': userid}); </script> <script src="https://browser.sentry-cdn.com/5.15.5/bundle.min.js" crossorigin="anonymous"></script> <script nonce="6d764049-e711-4d96-a7a4-ca605fc68ea3">Sentry.init({ dsn: 'https://73410f1915d84abc8b2dd1f1aabd1c82@sentry.hackmd.dev/4', environment: 'production', integrations: function (intrus) { return intrus.filter(function (itr) { return itr.name !== 'TryCatch' }) } });</script> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KLW9Z3" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <script src="https://assets.hackmd.io/build/font-vendor.eaa8dd82d4e056021b8c.js" defer="defer"></script><script src="https://assets.hackmd.io/build/common-vendor.04da453a2a68f624f4d4.js" defer="defer"></script><script src="https://assets.hackmd.io/build/error-vendor.2fad652e8402ec5b4206.js" defer="defer"></script><script src="https://assets.hackmd.io/build/error-common.e3d428be7fbfc9757d80.js" defer="defer"></script><script src="https://assets.hackmd.io/build/error.0a56eeb082abc5be9968.js" defer="defer"></script> </body> </html>