99%的人都理解错了HTTP中GET与POST的区别
转自微信公众号WebTechGarden
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。
你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。
当你在面试中被问到这个问题,你的内心充满了自信和喜悦。
你轻轻松松的给出了一个“标准答案”:
-
GET在浏览器回退时是无害的,而POST会再次提交请求。
-
GET产生的URL地址可以被Bookmark,而POST不可以。
-
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
-
GET请求只能进行url编码,而POST支持多种编码方式。
-
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
-
GET请求在URL中传送的参数是有长度限制的,而POST么有。
-
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
-
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
-
GET参数通过URL传递,POST放在Request body中。
(本标准答案参考自w3schools)
“很遗憾,这不是我们要的回答!”
请告诉我真相。。。
如果我告诉你GET和POST本质上没有区别你信吗?
让我们扒下GET和POST的外衣,坦诚相见吧!
GET和POST是什么?HTTP协议中的两种发送请求的方法。
HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。
HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。
那么,“标准答案”里的那些区别是怎么回事?
在我大万维网世界中,TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录。如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里。当然,你也可以在GET的时候往车厢内偷偷藏点货物,但是这是很不光彩;也可以在POST的时候在车顶上也放一些数据,让人觉得傻乎乎的。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。
但是,我们只看到HTTP对GET和POST参数的传送渠道(url还是requrest body)提出了要求。“标准答案”里关于参数大小的限制又是从哪来的呢?
在我大万维网世界中,还有另一个重要的角色:运输公司。不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司。 虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。
好了,现在你知道,GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
你以为本文就这么结束了?
我们的大BOSS还等着出场呢。。。
这位BOSS有多神秘?当你试图在网上找“GET和POST的区别”的时候,那些你会看到的搜索结果里,从没有提到他。他究竟是什么呢。。。
GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?
1. GET与POST都有自己的语义,不能随便混用。
2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
现在,当面试官再问你“GET与POST的区别”的时候,你的内心是不是这样的?
评论列表
匿名
НКЦПФР попереджає інвесторів про ризики втрати грошей в “Центрі біржових технологій” та «ISRAEL INVESTMENTS LTD» 25.04.2019 Національна комісія з цінних паперів та фондового ринку попереджає інвесторів про ризики втрати грошей в “Центрі біржових технологій” та «ISRAEL INVESTMENTS LTD». Ці “проекти” не отримували від Комісії жодних ліцензій, необхідних для здійснення інвестиційної діяльності чи надання послуг з цінними паперами та іншими фінансовими інструментами на території України. Також Комісія не надавала необхідних дозволів на розміщення реклами, яку обидва проекти активно замовляють. Комісія вбачає в діяльності, види якої вказані на сайтах проектів «ISRAEL INVESTMENTS LTD» та «Центр Біржових Технологій», ознаки можливого зловживання на ринку фінансових послуг. НКЦПФР, в межах компетенції, здійснила всі необхідні дії, зокрема, зверталась (безуспішно) із запитами до осіб, які розміщують рекламні матеріали, порушила (успішно) справи про правопорушення за безліцензійну діяльність на фондовому ринку. Крім того, повідомила правоохоронні органи та Службу України з питань безпечності харчових продуктів та захисту споживачів. Центр Біржових Технологій Під час здійснення регулярного нагляду за галузевою рекламною активністю аналітики Комісії виявили сторінку “компанії” «Центр Біржових Технологій», на якій громадянам пропонують послуги портфельного інвестування, а саме інвестування у портфель «Клервант», який сформований з акцій найбільших світових компаній і недооцінених активів. Далі наводимо цитати з відповідної сторінки компанії «Центр Біржових Технологій», які можуть мати ознаки реклами та надання послуг на фондовому ринку, які здійснюються без відповідного дозволу Комісії: «Повний пакет послуг, що надається Центром Біржових Технологій — надійний фундамент, на якому будується і буде розвиватися ваш бізнес: навчання, програмне забезпечення, торгова система, аналітична і технічна підтримка на всіх етапах, від відкриття рахунку до рішення призупинити або закрити торгівлю»; «Клеревант» сформований фахівцями компанії ЦБТ — визнаними лідерами по портфельному інвестуванню в Україні. Важливо знати: на момент роботи портфеля ваші гроші знаходяться на рахунку європейського банку. Вони застраховані фондом гарантованого страхування і інвесторським компенсаційним фондом Європи»; «Унікальність «Клеревант» полягає в надійності і інноваціях. Даний інвестиційний портфель поєднав в собі високу прибутковість акцій найбільших світових компаній і недооцінені активи. Можливість заробити від $ 5 000 до $ 50 000 за декілька місяців. Вигода: максимальний дохід завдяки унікальній стратегії оцінки акцій та інших активів»; «Центр Біржових Технологій — безумовний лідер за кількістю ВІП-клієнтів серед всіх українських компаній, які працюють на фінансових ринках». Також аналітики Комісії виявили багато зовнішньої реклами проекту в м. Києві, роликів на радіо, банерів та реклами на багатьох інформаційних ресурсах у мережі інтернет. Як сказано на сайті проекту, “Центр Біржових Технологій” має розгалуджену мережу філій та представництв у багатьох містах України”. З відкритих джерел Комісія також встановила, що послуги для забезпечення діяльності домену надаються компанією «OVH Hosting Oy», яка зареєстрована в Фінляндії, та використовує віртуальні приватні хмарні сервери (VPS), які забезпечують анонімність власників доменів. На офіційний запит Комісії про надання інформації від ЦБТ відповідь так і не надійшла. ISRAEL INVESTMENTS LTD Сайт проекту «ISRAEL INVESTMENTS LTD» пропонує громадянам послуги портфельного інвестування та п’ять різних варіантів інвестиційних пакетів за ціною від $ 500 до $ 50 000, які “сформовані з дорогоцінних металів, нафти, цінних паперів, криптовалют та стартапів”. Також на сторінці компанії зазначені такі послуги, як управління інвестиційними портфелями, інвестування у різні види накопичувальних фондів та у біржові індексні облігації, надання інформаційно-аналітичних та брокерських послуг. Далі наводимо цитати з відповідної сторінки компанії «ISRAEL INVESTMENTS LTD», які можуть мати ознаки реклами та надання послуг на фондовому ринку, які здійснюються без відповідного дозволу Комісії: «Професіонали нашої компанії також можуть створити індивідуальний інвестиційний портфель, з урахуванням Ваших побажань. Він буде доповнений фінансовими інструментами, які допоможуть швидше досягти поставлених цілей. Щоб гроші почали працювати на Вас, покладайтеся на професіоналів!»; «ІП надає стабільний щомісячний пасивний дохід. Придбати портфель дуже просто: вибираєте пакет, тиснете «інвестувати, заповнюєте просту форму зворотного зв’язку. Все, дуже просто, далі з Вами зв’яжеться наш фахівець. Він надасть повну консультацію і обговорить всі деталі обраного портфеля»; «Інвестиційний портфель це – різні активи, об’єднані для досягнення певних фінансових цілей. ІП може складатися з золота, нерухомості, цінних паперів, опціонів. Israel Investments пропонує готові інвестиційні пакети, які будуть приносити прибуток незалежно від політичної чи ринкової ситуації. Портфелі доступні для громадян будь-яких країн». Рекламу «ISRAEL INVESTMENTS LTD» аналітики виявили на багатьох популярних інформаційних ресурсах у мережі інтернет, у соціальних мережах. Відповідно до інформації з сайту, «ISRAEL INVESTMENTS LTD» має представництва в Ізраїлі, Англії, Італії, Швейцарії, та Україні. Згідно з даними Єдиного державного реєстру юридичних осіб, фізичних осіб-підприємців та громадських формувань, офіційне представництво «ISRAEL INVESTMENTS LTD» в Україні зареєстровано як юридична особа – ПП “ІФЛК “ІЗРАЇЛЬ ІНВЕСТМЕНС” (код за ЄДРПОУ 42620622). Послуги забезпечення діяльності домену надаються компанією «101domain», яка зареєстрована в США, і також надає своїм клієнтам можливість приховати інформацію про них у загальнодоступних Інтернет джерелах. На офіційний запит Комісії про надання інформації від проекту відповідь так і не надійшла. Комісія констатує в обох випадках всі ознаки можливого зловживання на ринку фінансових послуг, що несе загрозу введення в оману громадян та втрати ними значних коштів. НКЦПФР вживає всіх законних заходів щоб мінімізувати потенційно протиправну діяльність та попереджає інвесторів про ризики втрати грошей.
2023-06-08 23:11:58
匿名
線上賭場 台灣娛樂城/線上賭場(現金網)的特殊稱呼以及其歷史: 台灣對於線上賭場的特殊稱呼是「娛樂城/線上賭場(現金網)」。這種稱呼的背後有其原因,主要是因為線上賭場在台灣架設及經營是違法的。在早期經營線上博弈被抓的風險非常高,因此業者採用了「娛樂城」這樣的模糊代稱,以規避警方的注意。當時的網絡搜尋引擎尚未普及,這樣的代稱在一定程度上能夠達到避免被發現的效果。 台灣娛樂城/線上賭場的歷史可以分為幾個時期: 1. 網路未興盛時代: - 現場賭場時期(1980年代):賭博活動主要發生在實體賭場,包括家庭電話上的BB CALL呼叫器、六合彩、大家樂等方式。 - 電銷賭場時期(21世紀):隨著手機的普及,人們開始使用手機進行博弈,主要包括中華職棒簽賭和六合彩等。 2. 線上博弈時期(2013年開始): - 網際網路普及後,原本的信用版博弈業者開始轉戰線上賭場(娛樂城),開啟了線上博弈的時代。 - 由於在台灣,線上賭場架設和經營是違法的,合法的線上賭場通常選擇在合法的國家進行架設。 - 開設線上賭場主要採用「現金儲值」的方式,以規避法律風險。玩家將現金兌換成賭資,進行投注。 3. 娛樂城商業模式的轉變: - 早期的娛樂城業者往往將客服人員與金流(出入款)的職責綁在一起, 容易成為執法機關定罪的基礎。 - 現代的娛樂城業者開始將客服人員、金流服務商以及廣告行銷外包,以降低定罪風險。 - 由於遠端工作的普及以及區塊鏈技術的應用,未來娛樂城業者可能更加難以被追查,這也凸顯了博弈產業合法化的必要性。 娛樂城業者面臨的風險主要來自以下幾個方面: - 架站主機:娛樂城業者通常在合法的國家進行架設,使執法機關難以從此方面下手追查。 - 客服人員:娛樂城業者可能在台灣設立辦公室提供客服服務,這也是執法機關可能進行搜索的目標之一。 - 金流(出入款):娛樂城業者使用人頭帳戶進行金流操作,以規避監管機構的追蹤,但也存在風險。 - 行銷推廣:娛樂城業者需要進行廣告推廣來吸引玩家,行銷推廣方式也可能成為執法機關追查的一環。 娛樂城業者商業模式的轉變也反映了博弈產業的發展趨勢。隨著網路技術的成熟和商業模式的創新,博弈產業可能朝著合法化和監管的方向發展,以確保公信力、保護玩家權益並徵收相應的稅收。
2023-06-08 22:46:29
匿名
<a href=https://rg8888.org/真人百家樂/百家樂/>線上百家樂</a> 百家樂 百家樂(Baccarat)是一種撲克遊戲,也是賭場中常見的賭博遊戲之一。它起源於義大利,在15世紀傳入法國,並在19世紀盛行於英法等地。如今,百家樂是全球各地賭場中受歡迎的賭博遊戲之一,特別是在澳門的賭場中,百家樂賭桌的數量是全球賭場中最多的,下注金額和獲利也佔據著澳門賭場的領導地位。 玩法: 玩家可以下注莊家(Banker)或閒家(Player),並沒有限制。遊戲中使用8副撲克牌,洗牌後放在發派箱中。每局遊戲,莊家和閒家都會收到至少兩張牌,但不超過三張牌。第一和第三張牌發給閒家,第二和第四張牌發給莊家。根據補牌規則,可能需要再發一張牌給莊家或閒家。 點數計算方法: 在百家樂中,撲克牌的點數計算方法是:Ace牌算作1點,2到9的牌按其顯示的點數計算,10、J、Q和K的牌則算作0點(有些賭場可能將10點視為10點)。當所有牌的點數總和超過9時,只計算總數中的個位數。因此,8和9的牌點數總和為7點(8 + 9 = 17)。百家樂只計算撲克牌的個位數值,因此可能的最大點數是9點(例如,一張4和一張5的牌點數總和為9),最小點數是0點,也稱為baccarat(例如,一張10和一張Q的牌點數總和為20,只計算個位數,即0)。 投注: 玩家可以在莊家或閒家上下注,也可以下注和局(即最終點數一樣)。此外,玩家還可以下注莊對子或閒對子(即莊或閒首兩張牌相同)。在澳門的賭場中,還加入了「幸 運六」,玩家可以下注莊或閒是否能以6點取勝。 賠率: 如果下注莊家並且莊家贏,有兩種玩法可以選擇。第一種是買1賠0.95,即需要支付5%的佣金給莊家。第二種是「免佣百家樂」,贏1賠1,但如果莊家以6點取勝,則賠率為1賠0.5。下注閒家並且閒家贏,贏1賠1。下注和局,贏1賠8。下注莊對子或閒對子,贏1賠11。根據澳門賭場的「幸運六」賠率,以兩張牌的6點取勝為贏1賠12,以三張牌的6點取勝為贏1賠20。 機會率: 在百家樂中,下注莊家的期望值只有約1%左右的優勢,和大多數賭場遊戲相比相對較低。 結論 百家樂是一種簡單易懂的賭博遊戲,也是一個非常社交化的遊戲。在百家樂桌上,通常有一名荷官負責發牌和管理遊戲進程。玩家只需要在莊家、閒家或和局中選擇一方下注,然後觀察牌局結果。 百家樂的玩法優勢在於其遊戲節奏快速,且無需玩家做出複雜的決策。遊戲結果完全基於牌的發放和點數計算,使得玩家可以輕鬆參與,無需特別的技巧或策略。 此外,百家樂也因其高投注限制而聞名。在高額賭桌上,玩家可以下注巨額金額,使得這個遊戲成為富豪和高額賭徒的首選。然而,即使在小賭桌上,百家樂仍然吸引著許多玩家,因為它提供了一種緊張刺激的賭博體驗。 百家樂也具有一些特殊的傳統和儀式。例如,在一些賭場中,荷官會使用一把特殊的牌具,稱為百家樂靴(Baccarat Shoe),其中放有多副牌。這種做法旨在提高遊戲的公平性和隨機性。 總的來說,百家樂是一個受歡迎的賭博遊戲,不僅因其簡單易懂的規則,而且因其高投注限制和社交化的特性。無論是在實體賭場還是在網絡賭場,玩家都可以享受到這個刺激的遊戲,並期待著幸運女神的眷顧
2023-06-08 22:46:27
匿名
Поздравляю, это просто отличная мысль late last month, uber began offering <a href=https://www.itelecoms.be/portfolio/iphone-11/>https://www.itelecoms.be/portfolio/iphone-11/</a> to drivers within the united kingdom.
2023-06-08 22:31:50
匿名
<a href=https://t.me/onewincombr>1win</a> After we be suffering with unfaltering on a unfailing bookmaker 1win, you should register. There is a constituent below, tail it, choose the method that is suitable for us. <a href=https://t.me/onewincombr>1win</a>
2023-06-08 22:24:29