[{"data":1,"prerenderedAt":263},["ShallowReactive",2],{"project-36543398":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":33,"aspects":34,"strip":43,"post_text":44,"what":45,"said":77,"maker_in_thread":156,"shape":163,"grid":168,"attempts":221,"same_week":226,"maker_shows":165,"maker_hidden":255,"reader_version":256,"card":257},"36543398","Tabserve.dev","Tabserve.dev. HTTPS proxy using Web Workers and a Cloudflare Worker","title","Show HN: Tabserve.dev. HTTPS proxy using Web Workers and a Cloudflare Worker","https:\u002F\u002Ftabserve.dev","tabserve.dev","emadda",1688164399,2023,117,21,546,3109,18,"notable","dev_tools","localhost tunneling","web_app",[24,25,26,27],"localhost tunnel","https proxy","ngrok alternative","web workers","mixed",-0.167,{"positive":31,"neutral":32,"mixed":31,"critical":32},1,5,12,{"execution":35,"privacy":37,"docs":39,"idea":40,"performance":41},{"positive":36,"critical":36},0,{"positive":36,"critical":38},2,{"positive":36,"critical":36},{"positive":31,"critical":36},{"positive":36,"critical":42},3,[42,42,31,31,36,42,36,42,42,36,31,36,32,36,42,31,36,36,31,36,36],"Tabserve gives you a https url for localhost using only the browser (tabserve.dev).\n\nTake a look:\nhttps:\u002F\u002Ftabserve.dev",{"problem":46,"audience":56,"pricing":65,"motivation":65,"time_to_build":65,"stack":66,"openness":76,"stage":76,"team_size":76},{"value":47,"source":48,"evidence":49},"Exposes a localhost server over an HTTPS URL without installing a CLI","maker",[50,53],{"id":51,"by":11,"text":52},"36558433","Thanks, yes it is the same thing. Tabserve adds a few extras: - No need to install a CLI, safer as it is in the browser sandbox. - Use the Chrome dev tools for observing…",{"id":54,"by":11,"text":55},"36549643","The client itself is likely to be more secure than other reverse proxy CLI's as it is inside your browser sandbox. CLI's have access to all your files. You would take the same…",{"value":57,"source":58,"evidence":59},"Developers who need to share or test a localhost web service","inferred",[60,61],{"id":54,"by":11,"text":55},{"id":62,"by":63,"text":64},"36556813","truemotive","This is cool, I took a good stab at using it last night but implementing CORS in the project I wanted it for was a pain on my end. Likely my issue, they have pretty clear but…",null,[67,72],{"value":68,"source":48,"evidence":69},"Web Workers",[70],{"id":71},"post",{"value":73,"source":48,"evidence":74},"Cloudflare Worker",[75],{"id":71},"unknown",{"praise":78,"objections":95,"requests":130,"questions":138,"alternatives":147},[79],{"value":80,"source":81,"evidence":82},"Good concept and clean UI","commenter",[83,87,91],{"id":84,"by":85,"text":86},"36545695","Solvency","What sort of precautions would one need to take before just firing this up on their toy project running on localhost...",{"id":88,"by":89,"text":90},"36557001","geekodour","nice stuff, really like the ui but i am not sure if this functionally does anything different than cloudflared tunnel --url http:\u002F\u002Flocalhost:8080 it's the same thing right?",{"id":92,"by":93,"text":94},"36548871","revskill","God! No more the garbage ngrok for me.",[96,111,119],{"value":97,"source":81,"evidence":98},"No WebSocket support yet",[99,103,107],{"id":100,"by":101,"text":102},"36546067","neoecos","The missing websockets support is anywhere in the roadmap?",{"id":104,"by":105,"text":106},"36545724","latchkey","Under limitations: \"No WebSocket requests.\"",{"id":108,"by":109,"text":110},"36545862","sattoshi","Without web sockets and streaming responses, this is not very useful tbh.",{"value":112,"source":81,"evidence":113},"Requires enabling CORS on the localhost server",[114,118],{"id":115,"by":116,"text":117},"36546058","TechBro8615","This is pretty awesome. I was going to ask if it is constrained by any Same Origin restrictions, but I see the note at the bottom of the page that you must \"enable CORS\" on the…",{"id":62,"by":63,"text":64},{"value":120,"source":81,"evidence":121},"Any site in the browser can reach the localhost server",[122,126],{"id":123,"by":124,"text":125},"36549389","paulgb","> Since you are behind the reverse proxy anyway, there is probably not much of a security implication? If you access other sites in the same browser, they'll be able to send…",{"id":127,"by":128,"text":129},"36549566","westurner","With such configuration, requests to e.g. a jupyterlab\u002Fcockpit\u002Fmosh webterm on localhost - if the auth token is already stored in a cookie - thus can execute arbitrary commands…",[131],{"value":132,"source":81,"evidence":133},"Add WebSocket support",[134,135],{"id":100,"by":101,"text":102},{"id":136,"by":109,"text":137},"36545577","How does this deal with web-sockets?",[139,143],{"value":140,"source":81,"evidence":141},"Which origin must the CORS header allow",[142],{"id":115,"by":116,"text":117},{"value":144,"source":81,"evidence":145},"How it differs from cloudflared tunnel",[146],{"id":88,"by":89,"text":90},[148,152],{"value":149,"source":81,"evidence":150},"cloudflared tunnel",[151],{"id":88,"by":89,"text":90},{"value":153,"source":81,"evidence":154},"ngrok",[155],{"id":92,"by":93,"text":94},{"comments":32,"answered":42,"key":157},[158,161,162],{"id":159,"text":160},"36549591","Thanks. Yes, `Access-Control-Allow-Origin: app.tabserve.dev` is correct, app.tabserve.dev is the origin where the fetch requests are made to your localhost.",{"id":54,"text":55},{"id":51,"text":52},{"commenters":164,"max_depth":165,"maker_replies":32,"first_comment_mins":166,"lifespan_hours":167},16,4,212,31,[169,171,175,177,178,180,181,183,185,187,189,191,194,196,200,203,204,208,213,215,219],[115,36,42,170,116,36],"project\u002Fneutral\u002Fexecution",[172,36,42,173,174,36],"36548601","project\u002Fneutral\u002Fprivacy","mattlondon",[123,36,31,176,124,36],"project\u002Fcritical\u002Fprivacy",[127,36,31,176,128,36],[159,36,36,179,11,31],"maker\u002Fneutral\u002Fdocs",[84,31,42,173,85,36],[54,31,36,182,11,31],"maker\u002Fneutral\u002Fprivacy",[62,38,42,184,63,36],"project\u002Fmixed\u002Fdocs",[88,42,42,186,89,36],"project\u002Fneutral\u002Fidea",[51,42,36,188,11,31],"maker\u002Fneutral\u002Fidea",[100,165,31,190,101,36],"project\u002Fcritical\u002Fperformance",[192,165,36,193,11,31],"36549654","maker\u002Fneutral\u002Fperformance",[92,32,32,195,93,36],"project\u002Fpositive\u002Fidea",[197,32,36,198,199,36],"36554611","commenter\u002Fneutral\u002Fnone","Bnjoroge",[136,201,42,202,109,36],6,"project\u002Fneutral\u002Fperformance",[104,201,31,190,105,36],[205,201,36,206,207,36],"36548069","commenter\u002Fneutral\u002Fperformance","tuukkah",[209,210,36,211,212,36],"36549270",7,"other\u002Fneutral\u002Fnone","dmitri1981",[108,214,31,190,109,36],8,[216,214,36,217,218,36],"36548008","commenter\u002Fcritical\u002Fnone","nl",[220,214,36,193,11,31],"36549665",[222,225],{"id":223,"t":224,"points":32,"comments":42},"36479084",1687783942,{"id":4,"t":12,"points":14,"comments":15},[227,232,236,241,246,251],{"id":228,"name":229,"points":230,"category":231},"36605493","Hacker News user blogroll",937,"consumer_social",{"id":233,"name":234,"points":235,"category":20},"36582468","Degrees What",171,{"id":237,"name":238,"points":239,"category":240},"36591767","varun.ca",159,"creative",{"id":242,"name":243,"points":244,"category":245},"36590834","FerretDB",147,"data",{"id":247,"name":248,"points":249,"category":250},"36520410","Windmill knowledge base Discord bot",144,"ai",{"id":252,"name":253,"points":254,"category":250},"36564923","Project S.A.T.U.R.D.A.Y.",121,false,"v2",{"id":258,"name":5,"line":6,"ai":255,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":259,"top":18,"kw":260,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":261,"url":9,"mix":262,"praise":80,"objection":97,"sub":21},36543398,-0.17,[24,25,26,27],"331103033010503100100",[31,32,31,32],1794036637729]