久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

【整理總結】前端必知必會的幾個實用響應頭

【整理總結】前端必知必會的幾個實用響應頭

前端(vue)入門到精通課程:進入學習

閱讀本文,你將:

  • 學會幾個超級超級實用的 響應頭,解決你工作中遇到的問題。

  • 不僅解決問題,還能讓你在 和后端、運維撕逼時 占據上風。

學習 響應頭 很重要嗎?

真的很重要。

不信你看看下面的場景,眼熟不?

一、預覽、下載 讓人操碎了心?

1.1 場景

我不止一次聽到同事、群友們討論這個問題:

“后端提供了一個 txt(或者 pdf/'json' 等)文件的下載 url,可以當我用 a 標簽打開時,卻變成了預覽……怎么辦?救!!!”

此時,就會有人上去推薦 FileSaver.js 或者 “手寫讀流另存為”。

然后還有人附和…

我:???

【整理總結】前端必知必會的幾個實用響應頭

這是需要寫代碼才能解決的問題嗎?

如果你有了解過 Content-Disposition 這個 Response Header,那你一定知道,只需要響應頭上增加一行,問題就能迎刃而解。

1.2 介紹

Content-Disposition:這個響應頭可以決定內容是 預覽 還是 下載

它支持三種格式的值:

  • Content-Disposition: inline
    此時,消息體會以頁面的一部分或者整個頁面的形式展示。(預覽)

  • Content-Disposition: attachment
    消息體應該被下載,默認文件名和 url 格式有關。

  • Content-Disposition: attachment; filename="filename.jpg"
    消息體應該被下載,默認文件名可指定。

注:如果需要預覽,需要配合適當的 Content-Type 食用;

1.3 示例

為此,我特意寫了一個 express 小示例。

大抵是在 express 應用下寫了三個路由,如下:

const user = {   name: "摸魚的春哥",   blogUrl: "https://juejin.cn/user/1714893870865303" }  const contentDispositionInline = async (req, res, next) => {   res.setHeader('Content-Disposition', 'inline')   res.send(user) }  const contentDispositionFilename = async (req, res, next) => {   res.setHeader('Content-Disposition', 'attachment; filename="chunge.json"')   res.send(user) }  const contentDispositionNoFilename = async (req, res, next) => {   res.setHeader('Content-Disposition', 'attachment')   res.send(user) }

然后我分別訪問三個路由,效果差異:

【整理總結】前端必知必會的幾個實用響應頭

二、項目升級了,需要客戶 清空緩存 ?

2.1 場景

實施:“客戶反饋Bug 還是沒修復。”
你:“哥,真修復了,要不你讓客戶清一下緩存?”
實施:“啊?客戶說他不會清……”
……【整理總結】前端必知必會的幾個實用響應頭

永遠不要期望你的客戶會進行 “那些研發才懂” 的操作。也不要把你的問題,歸因到 瀏覽器緩存 上。

瀏覽器緩存 是被發明出來優化用戶體驗的,并不是被發明出來阻礙用戶的。

因此,理解如何使用 Cache-Control 這個響應頭,是前端的必知技能。

2.2 介紹

Cache-Control:用來指定緩存機制。

緩存,作為前端八股文必考知識,相信大家已經耳熟能詳。 常見的 Cache-Control 屬性如下:

Response Header屬性 含義
cache-control no-store 不緩存,這個會讓客戶端、服務器都不緩存,也就沒有所謂的強緩存、協商緩存了。
cache-control public 表明響應可以被任何對象(包括:發送請求的客戶端,代理服務器,等等)緩存,即使是通常不可緩存的內容。(例如:1.該響應沒有max-age指令或Expires消息頭;2. 該響應對應的請求方法是 POST 。)
cache-control private 表明響應只能被單個用戶緩存,不能作為共享緩存(即代理服務器不能緩存它)。私有緩存可以緩存響應內容,比如:對應用戶的本地瀏覽器。
cache-control max-age=<1000> 設置緩存存儲的最大周期,超過這個時間緩存被認為過期(單位秒)。與Expires相反,時間是相對于請求的時間。
  • 不緩存
    不緩存是最容易理解,每一次請求都會從服務端重新獲取,不進行任何緩存。
    此策略只需要賦予 Cache-Control: no-store 響應頭即可。
  • 強緩存
    有些資源文件,幾乎不會發生變化(比如已經 hash化命名的文件),則可以直接從本地緩存獲取,這就是所謂的 強緩存 ;
    通過 cache-control: public/private 或者 cache-control: max-age=<1000> 都可以指定機制為強緩存。
  • 協商緩存
    這是一種更為復雜緩存機制,無法再通過響應頭 簡單粗暴地 指定實現,而是需要前后端協作配合。
    簡單來說,每次請求資源前前端會寫代前一次的響應 hash,問詢服務端 資源是否發生過變化,從而達到準確緩存的效果。
    本文不贅述,如果有興趣,可以參考此文:juejin.cn/post/703078…

2.3 實際生產如何運用?

  • 凡是名稱帶有 hash 值的資源,一律可以強緩存。
    (畢竟內容一旦有變化,名稱的hash 也跟著變了)
  • 凡是通過 cdn 引入的第三方庫,均建議攜帶版本信息,這樣也可以強緩存。
    (比如 /xx/xx/jquery.min.js 切換為 jquery@3.6.0/dist/jquery.min.js
  • 凡是 htmlico 這類命名固定的文件,建議一律 不緩存 或者 協商緩存

三、我的 Cookie 不可能這么可愛!

3.1 場景

"春哥春哥,為啥我登錄成功了,請求還是 401 ?"

"春哥春哥,為啥我存進 cookie 的值取不到?"

"春哥春哥,這破 cookie 是不是壞了,瀏覽器里看明明有值,為啥我訪問不了?"

我:“兄弟,你有了解過一個叫 set-cookie 的響應頭嗎?”

【整理總結】前端必知必會的幾個實用響應頭

是它!是它!就是它!關于 cookie 的各種異常,全靠它!

3.2 介紹

Cookie 曾經是 Web 開發無法繞開的一道門檻,而現在它的存在感越來越弱,但海量的存量項目并不會因為技術的趨勢而消失,它們依然很有價值,依然需要維護。

set-cookie 響應頭正是 Cookie 體系中最為核心的 第一主角

Set-Cookie: 是一個響應頭,服務端賦值,讓瀏覽器端產生 Cookie,并限定 Cookie 的各種特性。

這些特性就包括:

  • 過期時限;Expires=<date>
  • 存活周期;Max-Age=<number>
    在 cookie 失效之前需要經過的秒數。0-1 直接失效;此屬性的優先級高于 Expires
  • 域名;Domain=<domain-value>
    指定 cookie 只能在什么域下生成;(允許通配,這個屬性主要出于安全性)
  • 路徑;Path=<path-value>
    Domain 更為細致的控制策略,甚至指定了 xx 路徑下才能發送 Cookie
  • 只在 Https 產生;Secure
    如果 set-cookie 頭中有 Secure 屬性,那么瀏覽器只會在 Https 環境產生和發送 Cookie
  • 禁用 js 操作 APIHttpOnly
    如果 set-cookie 頭中有 HttpOnly 屬性,那么 Cookie 屬性的生成、讀寫、發送就只能由瀏覽器通過 "響應頭" 控制了,不在允許前端通過 js 操作 Cookie
  • 是否允許跨域攜帶;SameSite=<samesite-value>
    支持屬性包括 StrictLaxNone,分別表示:
    • Strict: 完全不能跨域攜帶;
    • Lax: 只允許從外站導航到源站時攜帶 Cookie
    • None:跨域也行,不限制。

3.3 開發常見問題分析

  • 為啥你登錄成功了,請求還是 401

    早期非常多的項目,使用 Cookie 作為用戶身份識別的手段,比如 Spring MVC 項目就是通過給 Cookie 一個 JSeesionId 的值作為識別,判斷你是否出于當前會話。

    而 "登錄了,卻還 401" 這個現象,如果服務端沒有問題的話,多半是 瀏覽器其實并未存儲Cookie

    換個說法,你每次發起請求,服務端都認為你是一次 新的會話,和上一次 登錄的你 并非同一人。

    如果你正處于 http 環境,那你可能需要暫時移除 Secure 屬性。

  • 存不進、取不出?
    先確認 是否有域的限制是否有路徑的限制是否有 HttpOnly?
    逐一排查下來,問題不難解決。

(學習視頻分享:web前端)

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
黄色日韩精品| 伊人久久成人| 波多野结衣久久精品| 日韩一区二区中文| 婷婷五月色综合香五月| 日韩中文字幕不卡| 久久伊人久久| 国产成人精品一区二区免费看京| 久久大逼视频| 精品理论电影在线| 国产精品亚洲综合色区韩国 | 日韩一区二区三区在线看| 97精品国产福利一区二区三区| 97欧美在线视频| 蜜桃视频在线观看一区| 精精国产xxxx视频在线播放| 国产一区丝袜| 成人在线视频区| 国内一区二区三区| 国产毛片精品| 国产精品欧美一区二区三区不卡| 欧美一区在线观看视频| 亚洲自拍另类| 伊人成人网在线看| 亚洲一区成人| 精品1区2区3区4区| 欧美日韩视频一区二区三区| 另类中文字幕国产精品| 蜜桃精品在线| caoporn视频在线| 91在线成人| 婷婷综合电影| 久久精品xxxxx| 国产精品欧美在线观看| 精品久久中文| 日韩国产欧美| av亚洲在线观看| 亚洲精品888| 精品国产乱码久久久久久1区2匹| 久久av超碰| 精品欧美日韩精品| 国产成人精品一区二区三区免费 | 欧美日韩在线网站| 在线日韩中文| 亚洲欧美日韩精品一区二区 | 美女av在线免费看| 日韩影院二区| 99在线|亚洲一区二区| 日韩精品一级中文字幕精品视频免费观看 | 成人高清一区| 韩国久久久久久| 国产一区久久| 亚洲青青久久| 国产精品夜夜夜| 亚洲黄色网址| 在线一区视频| 欧美亚洲福利| 日韩精品专区| 亚洲欧美激情诱惑| 国产伦精品一区二区三区千人斩| 成人国产精品一区二区免费麻豆| 久久精品亚洲人成影院 | 99精品99| 日韩精品三级| 裤袜国产欧美精品一区| 欧美日韩免费观看一区=区三区| 日韩精品免费观看视频| 精品福利久久久| 91久久久久| 麻豆一区二区三| 欧美精选视频一区二区| 久久一二三区| 精品亚洲自拍| 久久黄色影院| 日本一区二区三区中文字幕| 久久久久久婷| 欧美 日韩 国产精品免费观看| 夜夜嗨网站十八久久 | 精品国产a一区二区三区v免费| 性欧美xxxx免费岛国不卡电影| 亚洲中午字幕| 精品资源在线| 亚洲一区二区三区高清| 国产日韩免费| 激情婷婷欧美| 国产亚洲精品美女久久| 国产综合色区在线观看| 中文字幕一区二区av| 丝袜诱惑一区二区| 日韩国产91| 成人羞羞视频播放网站| 伊人www22综合色| 不卡福利视频| 日韩精品欧美成人高清一区二区| 日韩国产专区| 国产精品扒开腿做爽爽爽软件| 免费在线小视频| 欧美一级全黄| 99在线精品免费视频九九视| 精品一区二区三区的国产在线观看| 快she精品国产999| 国产精品二区不卡| 中文字幕亚洲精品乱码| 日韩激情一区| 国产精品三级| 在线精品视频一区| 99久精品视频在线观看视频| 久久不见久久见中文字幕免费| 蜜臀av性久久久久蜜臀aⅴ四虎| 蜜桃成人精品| 日韩美女一区二区三区在线观看| 精品免费av一区二区三区| 欧美国产不卡| 另类小说一区二区三区| 久久免费福利| 荡女精品导航| 日韩久久视频| 日韩欧美网址| 日韩在线欧美| 久久久噜噜噜| 国产99精品一区| 午夜欧美视频| 视频一区视频二区在线观看| 亚洲一区导航| 91精品国产自产观看在线 | 日韩av午夜在线观看| 日韩欧美四区| 国产精品一线| 国产精品亚洲欧美日韩一区在线| 国产日韩在线观看视频| 国产精品jk白丝蜜臀av小说| 精品一区二区三区中文字幕视频| 高清一区二区| 国产精品av久久久久久麻豆网| 尹人成人综合网| 最新亚洲国产| 国产精品黄网站| 国产精品毛片久久| 999国产精品视频| 亚洲一区免费| 91嫩草精品| 国产精品xx| 久久国产小视频| 欧美日韩国产高清| 亚洲精选91| 欧美aaaaaa午夜精品| 黑人精品一区| 亚洲视频播放| 日本免费一区二区视频| 欧美成人精品午夜一区二区| 成人亚洲欧美| 亚洲综合国产| 国产欧美啪啪| 日韩欧美另类一区二区| 国产精品美女久久久| 日韩av影院| 欧美香蕉视频| 美女久久网站| 国产日本亚洲| 久久久久欧美精品| 亚洲精品三级| 日本一区二区高清不卡| 欧美女激情福利| 69堂精品视频在线播放| bbw在线视频| 免费日韩av片| 麻豆一区二区在线| 激情五月综合| 久久精品av麻豆的观看方式| 免费看av不卡| 亚洲精品三级| 欧美三区四区| 日韩欧美中文在线观看| 久久精品五月| 亚洲综合不卡| 精品国产91| 亚洲尤物av| av中文资源在线资源免费观看| 视频一区免费在线观看| 精品视频国内| 亚洲日韩中文字幕一区| 亚洲精品**中文毛片| 少妇精品久久久一区二区| 日韩免费高清| 欧美日韩亚洲一区在线观看| 久久精品亚洲人成影院| 欧美久久一区二区三区| 欧美 日韩 国产精品免费观看| 青青草精品视频| 欧美日韩国产在线观看网站 | 亚洲三级网站| 国产福利电影在线播放| 亚洲三级精品| 久久免费黄色| 欧美国产中文高清| 久热精品在线| 欧美日韩国产v| 国产精品久久久网站| 免费人成在线不卡| 午夜精品成人av|