[{"data":1,"prerenderedAt":338},["ShallowReactive",2],{"project-3965073":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":34,"aspects":35,"strip":45,"post_text":47,"what":48,"said":100,"maker_in_thread":219,"shape":225,"grid":230,"attempts":298,"same_week":299,"maker_shows":31,"maker_hidden":330,"reader_version":331,"card":332},"3965073","JSONP","enable cross-domain requests to any JSON API (w\u002F AJAX)","title","Show HN: JSONP - enable cross-domain requests to any JSON API (w\u002F AJAX)","http:\u002F\u002Fjsonp.jit.su\u002F","jsonp.jit.su","aidanfeldman",1336855993,2012,51,33,466,1677,28,"notable","infrastructure","cors proxy","web_app",[24,25,21,26,27],"jsonp","cross-domain requests","json api","ajax","mixed",-0.347,{"positive":31,"neutral":32,"mixed":31,"critical":33},1,8,9,19,{"pricing":36,"performance":38,"idea":39,"privacy":41,"docs":42,"execution":43},{"positive":37,"critical":37},0,{"positive":37,"critical":31},{"positive":37,"critical":40},3,{"positive":37,"critical":40},{"positive":37,"critical":37},{"positive":37,"critical":44},2,[40,40,37,31,37,40,37,40,40,37,31,40,37,40,40,37,37,31,31,31,40,37,31,46,31,31,31,37,37,37,37],5,null,{"problem":49,"audience":60,"pricing":66,"motivation":76,"time_to_build":47,"stack":82,"openness":97,"stage":98,"team_size":99},{"value":50,"source":51,"evidence":52},"Browser cross-domain restrictions block JavaScript from calling JSON APIs on other domains","inferred",[53,56],{"id":54,"by":11,"text":55},"3969588","that's kind of the point. CORS just tells the browser to block the response, so this proxies the request and simply changes the headers to avoid that restriction.",{"id":57,"by":58,"text":59},"3965644","catshirt","irrelevant really- you can't set the CORS header on a remote API you don't own.",{"value":61,"source":51,"evidence":62},"Front-end developers building small mashup sites or calling third-party JSON APIs",[63],{"id":64,"by":11,"text":65},"3969539","1a) feel free to download the source and host yourself or write three lines of PHP 1b) not if you use the AJAX version - any response will come in as a string, so just don't…",{"value":67,"source":68,"evidence":69},"Free; source available to host yourself","maker",[70,73],{"id":71,"by":11,"text":72},"3969558","feel free to download the source to reimplement or host your own",{"id":74,"by":11,"text":75},"3969571","point taken. as long as nodejitsu provides free hosting, though, im happy to keep it free.",{"value":77,"source":68,"evidence":78},"Built for the maker's own project hackerhours.org and shared in case others find it useful",[79],{"id":80,"by":11,"text":81},"3969546","no commercial version planned - I threw it up because it was something I was going to use (to build hackerhours.org), and figured it would be useful to others as well",[83,89],{"value":84,"source":68,"evidence":85},"Node.js",[86],{"id":87,"by":11,"text":88},"3969520","It was quick for me to make and it doesn't really require maintenance - feel free to donate to the EFF in honor of the project. In terms of scalability, the app is doing very…",{"value":90,"source":91,"evidence":92},"Nodejitsu hosting","commenter",[93],{"id":94,"by":95,"text":96},"3966151","jaredsohn","It is on nodejitsu so at least portions of the architecture should scale reasonably.","open_source","launched","solo",{"praise":101,"objections":116,"requests":151,"questions":170,"alternatives":184},[102,112],{"value":103,"source":91,"evidence":104},"Useful for quick prototyping and development",[105,108],{"id":106,"by":95,"text":107},"3967166","1a -- you aren't just trusting this site, you are trusting everyone since the API keys can be found within the source. 3 -- it is even simpler than that; the source can be found…",{"id":109,"by":110,"text":111},"3965193","rohan_me",":P sweet",{"value":113,"source":91,"evidence":114},"Service is useful while still developing",[115],{"id":106,"by":95,"text":107},[117,124,135,140],{"value":118,"source":91,"evidence":119},"Unreliable for production or revenue-generating use",[120],{"id":121,"by":122,"text":123},"3965217","howardr","How reliable is this service trying to be? While I think it is a cool service if a person is just hacking around, it is not something I would use with any revenue generating…",{"value":125,"source":91,"evidence":126},"Security concerns: API keys and proxying arbitrary content",[127,131],{"id":128,"by":129,"text":130},"3966502","rorrr","While useful, there are a few implications 1) security ``` a) I won't trust you with my API keys b) If you get hacked, ANY javascript can be executed on my pages ``` 2)…",{"id":132,"by":133,"text":134},"3966858","Jach","I thought this was going to be about https:\u002F\u002Fgithub.com\u002Fjaubourg\u002Fjquery-jsonp but apparently not. I wouldn't trust it, personally, though I see its uses.",{"value":136,"source":91,"evidence":137},"Simple to reimplement with a few lines of server code",[138,139],{"id":128,"by":129,"text":130},{"id":106,"by":95,"text":107},{"value":141,"source":91,"evidence":142},"Scalability and sustainability of a free service",[143,147],{"id":144,"by":145,"text":146},"3965678","ilaksh","Maybe you could make a signup with Stripe or Paypal or something so that people could pay $5 or $10 per month to use it.. that way you would have enough money to at least pay for…",{"id":148,"by":149,"text":150},"3965881","tomkin","Well, based on the comments it sounds like you've exposed a need. People want it to be stable and don't seem comfortable with the idea of it being your hobby. Make them pay for…",[152,157,163],{"value":153,"source":91,"evidence":154},"Monetise with paid plans to fund hosting and maintenance",[155,156],{"id":144,"by":145,"text":146},{"id":148,"by":149,"text":150},{"value":158,"source":91,"evidence":159},"Support changing the user agent for requests",[160],{"id":161,"by":95,"text":162},"3966143","One things these services often lack is the ability to change the user agent before making the request. For awhile, if one wanted to make use of Pinterest's API, they would just…",{"value":164,"source":91,"evidence":165},"Make the CORS relay role more explicit in docs",[166],{"id":167,"by":168,"text":169},"3965241","lunaru","And in case anyone is wondering, that's how the Easier option is implemented (CORS), whereas the Easy option is just JSONP. OP could probably make it more explicit since it's not…",[171,176],{"value":172,"source":91,"evidence":173},"How much traffic can it handle and will it scale?",[174,175],{"id":144,"by":145,"text":146},{"id":128,"by":129,"text":130},{"value":177,"source":91,"evidence":178},"Why use this instead of Yahoo's YQL?",[179,180],{"id":106,"by":95,"text":107},{"id":181,"by":182,"text":183},"3965339","apsurd","cool service, I hope it remains up so we can depend on it. Currently you can accomplish the same thing using Yahoo's YQL, if you'd rather trust a big company to stay up. Here's…",[185,194,201,208,215],{"value":186,"source":91,"evidence":187},"Yahoo YQL",[188,189,193],{"id":181,"by":182,"text":183},{"id":190,"by":191,"text":192},"3966608","shaydoc","or you could use http:\u002F\u002Fdeveloper.yahoo.com\u002Fyql\u002Fconsole\u002F",{"id":106,"by":95,"text":107},{"value":195,"source":91,"evidence":196},"CORS",[197],{"id":198,"by":199,"text":200},"3965201","mike_organon","CORS is more secure than JSONP. http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCross-origin_resource_sharing",{"value":202,"source":91,"evidence":203},"easyXDM",[204],{"id":205,"by":206,"text":207},"3965447","beggi","Obligatory: https:\u002F\u002Fgithub.com\u002Foyvindkinsey\u002FeasyXDM",{"value":209,"source":91,"evidence":210},"Apache reverse proxy",[211],{"id":212,"by":213,"text":214},"3965978","willtheperson","I tried this once with a proxy script and it eventually lead to inconsistencies. I've settled on using an apache reverse proxy when I need to do cross-domain json posts…",{"value":216,"source":91,"evidence":217},"jquery-jsonp",[218],{"id":132,"by":133,"text":134},{"comments":220,"answered":46,"key":221},7,[222,223,224],{"id":87,"text":88},{"id":71,"text":72},{"id":54,"text":55},{"commenters":226,"max_depth":227,"maker_replies":220,"first_comment_mins":228,"lifespan_hours":229},22,4,36,35,[231,233,235,236,238,240,244,248,249,251,255,257,260,263,265,268,269,270,273,274,275,276,278,281,284,286,289,290,291,294,296],[144,37,40,232,145,37],"maker\u002Fneutral\u002Fpricing",[94,37,40,234,95,37],"project\u002Fneutral\u002Fperformance",[87,37,37,234,11,31],[121,31,31,237,122,37],"project\u002Fcritical\u002Fperformance",[71,31,37,239,11,31],"project\u002Fneutral\u002Fnone",[241,44,40,242,243,37],"3965237","project\u002Fneutral\u002Fidea","jostylr",[245,44,37,246,247,37],"3965600","other\u002Fneutral\u002Fnone","bede",[205,40,40,242,206,37],[181,227,40,250,182,37],"project\u002Fmixed\u002Fperformance",[252,227,37,253,254,37],"3966050","commenter\u002Fneutral\u002Fnone","ZenPsycho",[198,46,31,256,199,37],"project\u002Fcritical\u002Fprivacy",[258,46,40,242,259,37],"3965209","drivebyacct2",[261,46,37,253,262,37],"3965372","fooyc",[167,46,40,264,168,37],"project\u002Fneutral\u002Fdocs",[266,46,40,239,267,37],"3965345","NameNickHN",[57,46,37,253,58,37],[54,46,37,242,11,31],[212,271,31,272,213,37],6,"project\u002Fcritical\u002Fexecution",[161,220,31,272,95,37],[132,32,31,256,133,37],[148,33,40,232,149,37],[74,33,37,277,11,31],"project\u002Fneutral\u002Fpricing",[190,279,31,280,191,37],10,"project\u002Fcritical\u002Fidea",[109,282,46,283,110,37],11,"project\u002Fpositive\u002Fnone",[128,285,31,256,129,37],12,[287,285,31,280,288,37],"3966667","tommoor",[106,285,31,280,95,37],[80,285,37,242,11,31],[292,285,37,293,11,31],"3969908","commenter\u002Fneutral\u002Fprivacy",[295,285,37,293,95,37],"3970010",[64,285,37,297,11,31],"project\u002Fneutral\u002Fprivacy",[],[300,305,310,315,320,325],{"id":301,"name":302,"points":303,"category":304},"3959305","The Toolbox",164,"other",{"id":306,"name":307,"points":308,"category":309},"3955646","Mixture",125,"consumer_social",{"id":311,"name":312,"points":313,"category":314},"3960609","Try Design Lab",122,"learning_science",{"id":316,"name":317,"points":318,"category":319},"3965588","PDF parsing in Racket",101,"languages",{"id":321,"name":322,"points":323,"category":324},"3957258","Wovyn",78,"hardware",{"id":326,"name":327,"points":328,"category":329},"3970870","c",54,"productivity",false,"v2",{"id":333,"name":5,"line":6,"ai":330,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":334,"top":18,"kw":335,"maker":11,"domain":10,"tier":19,"attempts":37,"strip":336,"url":9,"mix":337,"praise":103,"objection":118,"sub":21},3965073,-0.35,[24,25,21,26,27],"3301030330130330011130151110000",[31,32,31,33],1793990881358]