摘要:是一個(gè)非常奇特的在線服務(wù),它的目標(biāo)不是解決一個(gè)問(wèn)題,而是提出一個(gè)疑問(wèn)當(dāng)我們把整個(gè)文檔儲(chǔ)存在中時(shí)會(huì)發(fā)生什么樣的事情原理整個(gè)文檔被儲(chǔ)存在之中。然而,對(duì)長(zhǎng)度有字符的限制。當(dāng)然,是開(kāi)源的,你也可以部署在自己的服務(wù)器上。
Hashify 是一個(gè)非常奇特的在線服務(wù),它的目標(biāo)不是解決一個(gè)問(wèn)題,而是提出一個(gè)疑問(wèn):當(dāng)我們把整個(gè)文檔儲(chǔ)存在 URL 中時(shí)會(huì)發(fā)生什么樣的事情?
原理整個(gè)文檔被儲(chǔ)存在 URL 之中。Hashify 將 Unicode 通過(guò) Base64 編碼轉(zhuǎn)化轉(zhuǎn)化為 ASCII 字符。
> unescape(encodeURIComponent("?a va?")) "?§a va?" > btoa(unescape(encodeURIComponent("?a va?"))) "w6dhIHZhPw=="URL 長(zhǎng)度限制
出乎一般人的意料,HTTP 規(guī)范并沒(méi)有見(jiàn)限制 URL 的長(zhǎng)度!這意味著 Hashify 可以儲(chǔ)存任意長(zhǎng)度的文檔!
那么,瀏覽器是否有限制呢?大可放心,主流瀏覽器支持 80k 字符的 URL。例如 Chrome 在 215k 字符的 URL 時(shí)才會(huì)失去響應(yīng)。
不過(guò),服務(wù)器和代理等等的限制可能要更緊一些。
并且,由于 URL 過(guò)長(zhǎng),復(fù)制傳播很不方便,因此 Hashify 使用了 bit.ly 來(lái)縮短網(wǎng)址。然而,bit.ly 對(duì) URL 長(zhǎng)度有 2048 字符的限制。對(duì)于大多數(shù)文檔而言,這也足夠了。如果文檔很長(zhǎng)的話,Hashify 會(huì)把內(nèi)容切分,(最多切分成 15 份),然后將每份進(jìn)行 Base64 轉(zhuǎn)碼并分別發(fā)送給 bit.ly。然后將 bit.ly 返回的結(jié)果組合起來(lái):
http://hashify.me/unpack:gYi2Ie,g4fpte.
因此,Hashify 可以為 22,500 字符以下的文檔生成短網(wǎng)址。
也就是說(shuō),22,500 字符以下的文檔都可以將 bit.ly 作為存儲(chǔ)空間!這真是對(duì)短網(wǎng)址生成服務(wù)絕妙的濫用!
API已知 Hashify 網(wǎng)址的前提下,無(wú)需訪問(wèn) hashify.me 網(wǎng)站便可獲取文檔內(nèi)容,例如,使用 Python:
from base64 import b64decode from urlparse import urlparse def unhashify(url): return b64decode(urlparse(url).path[1:]) unhashify("http://hashify.me/w6dhIHZhPw==")部署
你可以直接在 http://hashify.me 上使用 Hashify 服務(wù)。當(dāng)然,Hashify 是開(kāi)源的,你也可以部署在自己的服務(wù)器上。
克隆倉(cāng)庫(kù):
git clone https://github.com/hashify/hashify.me
安裝 Compass:
gem update --system gem install compass
安裝依賴
make setup
構(gòu)建
make
假設(shè)你使用 nginx 服務(wù)器,添加配置文件并激活,
ln -s "$(pwd)/nginx.conf" /opt/local/etc/nginx/sites-available/hashify.me ln -s ../sites-available/hashify.me /opt/local/etc/nginx/sites-enabled/hashify.me sudo nginx -s reload項(xiàng)目主頁(yè)
http://hashify.me
編撰 SegmentFault
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/78103.html
摘要:在本例中,使用屬性指定鏈接的目標(biāo),其中表示超文本鏈接。您應(yīng)該認(rèn)為和元數(shù)據(jù)隱式出現(xiàn)在示例中,即使它們沒(méi)有實(shí)際顯示在文本中。 來(lái)源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:JavaScript and the Browser 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《JavaScript 編程精解(第 2 版)》 ...
摘要:能異步地發(fā)送任意數(shù)據(jù)的技術(shù)稱(chēng)為,表示異步的和。若你使用,使用發(fā)送表單還會(huì)影響同源策略,并導(dǎo)致內(nèi)容被發(fā)送到一個(gè)無(wú)法訪問(wèn)的中。但要手動(dòng)發(fā)送二進(jìn)制數(shù)據(jù)的話,還有很多額外工作要做。用來(lái)發(fā)送二進(jìn)制是很直接的,使用方法就好了。 系列文章說(shuō)明 原文 在[發(fā)送表單數(shù)據(jù)]()一文中,HTML表單可以聲明式地發(fā)送一個(gè)HTTP請(qǐng)求。但表單也可以用JavaScript來(lái)準(zhǔn)備一個(gè)HTTP請(qǐng)求。本文將探索如何...
摘要:能異步地發(fā)送任意數(shù)據(jù)的技術(shù)稱(chēng)為,表示異步的和。若你使用,使用發(fā)送表單還會(huì)影響同源策略,并導(dǎo)致內(nèi)容被發(fā)送到一個(gè)無(wú)法訪問(wèn)的中。但要手動(dòng)發(fā)送二進(jìn)制數(shù)據(jù)的話,還有很多額外工作要做。用來(lái)發(fā)送二進(jìn)制是很直接的,使用方法就好了。 系列文章說(shuō)明 原文 在[發(fā)送表單數(shù)據(jù)]()一文中,HTML表單可以聲明式地發(fā)送一個(gè)HTTP請(qǐng)求。但表單也可以用JavaScript來(lái)準(zhǔn)備一個(gè)HTTP請(qǐng)求。本文將探索如何...
閱讀 1275·2021-11-11 16:55
閱讀 3131·2021-08-16 11:00
閱讀 2970·2019-08-30 15:56
閱讀 3509·2019-08-30 11:24
閱讀 3476·2019-08-30 11:05
閱讀 3592·2019-08-29 15:15
閱讀 2687·2019-08-26 13:57
閱讀 2658·2019-08-23 18:17