亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

hashify.me 神奇的在線服務(wù) 將整個文檔存儲在 URL 中

wushuiyong / 1209人閱讀

摘要:是一個非常奇特的在線服務(wù),它的目標(biāo)不是解決一個問題,而是提出一個疑問當(dāng)我們把整個文檔儲存在中時會發(fā)生什么樣的事情原理整個文檔被儲存在之中。然而,對長度有字符的限制。當(dāng)然,是開源的,你也可以部署在自己的服務(wù)器上。

Hashify 是一個非常奇特的在線服務(wù),它的目標(biāo)不是解決一個問題,而是提出一個疑問:當(dāng)我們把整個文檔儲存在 URL 中時會發(fā)生什么樣的事情?

原理

整個文檔被儲存在 URL 之中。Hashify 將 Unicode 通過 Base64 編碼轉(zhuǎn)化轉(zhuǎn)化為 ASCII 字符。

> unescape(encodeURIComponent("?a va?"))
"?§a va?"
> btoa(unescape(encodeURIComponent("?a va?")))
"w6dhIHZhPw=="
URL 長度限制

出乎一般人的意料,HTTP 規(guī)范并沒有見限制 URL 的長度!這意味著 Hashify 可以儲存任意長度的文檔!

那么,瀏覽器是否有限制呢?大可放心,主流瀏覽器支持 80k 字符的 URL。例如 Chrome 在 215k 字符的 URL 時才會失去響應(yīng)。

不過,服務(wù)器和代理等等的限制可能要更緊一些。

并且,由于 URL 過長,復(fù)制傳播很不方便,因此 Hashify 使用了 bit.ly 來縮短網(wǎng)址。然而,bit.ly 對 URL 長度有 2048 字符的限制。對于大多數(shù)文檔而言,這也足夠了。如果文檔很長的話,Hashify 會把內(nèi)容切分,(最多切分成 15 份),然后將每份進(jìn)行 Base64 轉(zhuǎn)碼并分別發(fā)送給 bit.ly。然后將 bit.ly 返回的結(jié)果組合起來:

http://hashify.me/unpack:gYi2Ie,g4fpte.

因此,Hashify 可以為 22,500 字符以下的文檔生成短網(wǎng)址。

也就是說,22,500 字符以下的文檔都可以將 bit.ly 作為存儲空間!這真是對短網(wǎng)址生成服務(wù)絕妙的濫用!

API

已知 Hashify 網(wǎng)址的前提下,無需訪問 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 是開源的,你也可以部署在自己的服務(wù)器上。

克隆倉庫:

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
項目主頁

http://hashify.me

編撰 SegmentFault

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/78103.html

相關(guān)文章

  • JavaScript 編程精解 文第三版 十三、瀏覽器 JavaScript

    摘要:在本例中,使用屬性指定鏈接的目標(biāo),其中表示超文本鏈接。您應(yīng)該認(rèn)為和元數(shù)據(jù)隱式出現(xiàn)在示例中,即使它們沒有實(shí)際顯示在文本中。 來源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項目原文:JavaScript and the Browser 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《JavaScript 編程精解(第 2 版)》 ...

    zhiwei 評論0 收藏0
  • 【譯】通過JavaScript發(fā)送表單

    摘要:能異步地發(fā)送任意數(shù)據(jù)的技術(shù)稱為,表示異步的和。若你使用,使用發(fā)送表單還會影響同源策略,并導(dǎo)致內(nèi)容被發(fā)送到一個無法訪問的中。但要手動發(fā)送二進(jìn)制數(shù)據(jù)的話,還有很多額外工作要做。用來發(fā)送二進(jìn)制是很直接的,使用方法就好了。 系列文章說明 原文 在[發(fā)送表單數(shù)據(jù)]()一文中,HTML表單可以聲明式地發(fā)送一個HTTP請求。但表單也可以用JavaScript來準(zhǔn)備一個HTTP請求。本文將探索如何...

    chinafgj 評論0 收藏0
  • 【譯】通過JavaScript發(fā)送表單

    摘要:能異步地發(fā)送任意數(shù)據(jù)的技術(shù)稱為,表示異步的和。若你使用,使用發(fā)送表單還會影響同源策略,并導(dǎo)致內(nèi)容被發(fā)送到一個無法訪問的中。但要手動發(fā)送二進(jìn)制數(shù)據(jù)的話,還有很多額外工作要做。用來發(fā)送二進(jìn)制是很直接的,使用方法就好了。 系列文章說明 原文 在[發(fā)送表單數(shù)據(jù)]()一文中,HTML表單可以聲明式地發(fā)送一個HTTP請求。但表單也可以用JavaScript來準(zhǔn)備一個HTTP請求。本文將探索如何...

    qylost 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<