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