国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Video標(biāo)簽添加跨域頭信息后的緩存問題

這篇具有很好參考價(jià)值的文章主要介紹了Video標(biāo)簽添加跨域頭信息后的緩存問題。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

問題復(fù)現(xiàn)

  1. 第一步的頁面,這個(gè)頁面有兩個(gè) video標(biāo)簽,他們的 src一樣
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
    <div class="container">
       <video controls width="400"  height="300" src="http://localhost:3000/video.mp4" alt="" ></video>
    </div>
</body>
</html>
  1. 為第video標(biāo)簽添加參數(shù) crossorigin=“anonymous” ,那么會(huì)報(bào)錯(cuò)?!皒xxx” has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
    <div class="container">
       <video controls width="400" crossorigin="anonymous"   height="300" src="http://localhost:3000/video.mp4" alt="" ></video>
    </div>
</body>
</html>

問題分析

這里的video.mp4的靜態(tài)文件服務(wù)器,服務(wù)端的代碼用 express寫的,后面會(huì)貼出,我們這里分析一下http協(xié)議。

HTTP/1.1 200 OK
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, PUT, DELETE, HEAD
Access-Control-Max-Age: 7200
ETag: "14a75b-+3U9KJ4h8BvTNuddNn1RqzOBBfA"
Content-Type: video/mp4
Content-Length: 1353563
last-modified: Mon, 10 Jul 2023 04:05:15 GMT
Date: Mon, 10 Jul 2023 07:32:31 GMT

通過上面的response請求,我們可以看出,這里并沒有使用Cache-Control 或expires來控制瀏覽器的緩存,那么緩存的重任就落到了last-modified的肩膀上,通過查資料,我們發(fā)現(xiàn)last-modified一般是根據(jù)與現(xiàn)在的時(shí)間差的 10%來作為緩存事件,而且每個(gè)瀏覽器廠家的實(shí)現(xiàn)也不一樣。文章來源地址http://www.zghlxwxcb.cn/news/detail-564483.html

規(guī)避這個(gè)問題

  1. 如果一開始就添加了 crossorigin=“anonymous”,那么理論上不會(huì)遇到當(dāng)前這個(gè)問題。
  2. 如果一開始在沒有添加 crossorigin="anonymous"的時(shí)候,添加了 Cache-Control或 沒last-modified頭,也不會(huì)遇到這樣的問題
  3. 如果一旦報(bào)錯(cuò),瀏覽器則不會(huì)發(fā)送任何http請求去糾正這個(gè)問題,js 也沒辦法控制瀏覽器去清理前端的緩存。

解決辦法

  1. 已經(jīng)出現(xiàn)問題的情況下,最有效的辦法是請客戶手動(dòng)的強(qiáng)制刷新,清理緩存。
  2. 前端代碼對報(bào)錯(cuò)的video檢測資源狀態(tài),跳過這個(gè)資源的播放或做其他的操作。

服務(wù)端代碼

const express = require('express');
const app = express();
const path = require('path');
const fs = require('fs');
const etag = require('etag');

// Custom CORS middleware
const cors = (req, res, next) => {
    const origin = req.headers.origin;
  
    if (origin) {
      res.setHeader('Access-Control-Allow-Origin', '*');
      res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, HEAD');
      res.setHeader('Access-Control-Max-Age', '7200');
    }
  
    next();
};

app.use(cors);  // Use cors middleware for all routes

app.use(express.static('public'));

app.get('/video.mp4', function(req, res) {
    const filePath = path.join(__dirname, 'public', 'v.mp4');
    const stat = fs.statSync(filePath);
  
    fs.readFile(filePath, (err, data) => {
      if (err) {
        console.error(err);
        res.status(500).send('Server Error');
      } else {
        res.setHeader('ETag', etag(data));
        res.setHeader('Content-Type', 'video/mp4');
        res.setHeader('Content-Length', stat.size);
        res.setHeader('last-modified', stat.mtime.toUTCString());
        //res.setHeader('Cache-Control', 'public, max-age=10');
        res.removeHeader('Connection')
        res.removeHeader('Keep-Alive')
        res.end(data);
      }
    });
  });
app.listen(3000, function() {
  console.log('Listening on port 3000...');
});

到了這里,關(guān)于Video標(biāo)簽添加跨域頭信息后的緩存問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 關(guān)于使用video標(biāo)簽插入視頻時(shí),視頻無法播放的問題

    關(guān)于使用video標(biāo)簽插入視頻時(shí),視頻無法播放的問題

    寫代碼遇到一個(gè)問題:使用video標(biāo)簽插入視頻時(shí),在chrome中無法播放,只顯示了一個(gè)封面圖片,在ie卻可以播放。 video的使用是看別人的: 由于照搬別人的代碼,我寫的代碼如下: 然后出現(xiàn)問題:只有個(gè)封面,不能播放視頻 解決過程: ?我以為是瀏覽器兼容問題,查資料發(fā)

    2024年02月11日
    瀏覽(93)
  • ios和安卓手機(jī)端使用video標(biāo)簽播放失敗的問題

    ios和安卓手機(jī)端使用video標(biāo)簽播放失敗的問題

    手機(jī)端請求后端接口,返回視頻流給前端,然后在手機(jī)端進(jìn)行播放,手機(jī)端需要適配ios和安卓,后端在開發(fā)好接口后在瀏覽器、postman調(diào)用接口時(shí)都能正常播放,安卓客戶端也可以正常播放,但是ios播放失敗。 剛開始覺得是網(wǎng)速太慢的原因,換了一個(gè)更小的視頻,仍然不行,

    2024年01月18日
    瀏覽(85)
  • 【標(biāo)簽bug】video標(biāo)簽部分mp4文件在ios中無法自動(dòng)播放的問題

    在安卓端和h5頁面調(diào)試端,video標(biāo)簽下的mp4格式文件均可以播放,但是video標(biāo)簽部分mp4文件在ios中無法自動(dòng)播放的問題,搜了很多資料有如下解決方案 前四個(gè)屬性: muted:靜音播放,一般瀏覽器chrome為例,用戶需要在頁面上操作一次,才能播放視頻,不允許用戶進(jìn)入后直接顯示

    2024年02月06日
    瀏覽(88)
  • 谷歌chrome瀏覽器無法自動(dòng)播放video標(biāo)簽視頻的問題

    谷歌chrome瀏覽器無法自動(dòng)播放video標(biāo)簽視頻的問題

    問題根源詳見: Chrome中的自動(dòng)播放政策??https://developer.chrome.com/blog/autoplay/ ?The Autoplay Policy launched in Chrome 66 for audio and video elements and is effectively blocking roughly half of unwanted media autoplays in Chrome. For the Web Audio API, the autoplay policy launched in Chrome 71. This affects web games, some WebRTC appli

    2024年02月11日
    瀏覽(116)
  • uniapp使用video標(biāo)簽無法播放視頻出現(xiàn)黑屏問題處理

    uniapp使用video標(biāo)簽無法播放視頻出現(xiàn)黑屏問題處理

    問題出現(xiàn)情況 并且點(diǎn)擊播放后出現(xiàn)報(bào)錯(cuò) 解決辦法 問題出現(xiàn)的原因可能是video的視頻流不兼容或者在f12下無法看見視頻文件導(dǎo)致的,所有我們使用computed計(jì)算屬性來解決這個(gè)問題 js html 按照上面的做法 這樣問題就解決了 希望能解決大家的問題 一鍵三連

    2024年02月11日
    瀏覽(100)
  • 蘋果手機(jī)video標(biāo)簽播放視頻問題(播放mp4視頻遇到的坑)

    1.場景描述 服務(wù)端上傳MP4視頻文件,iOS客戶端通過URL播放該視頻文件。提供視頻接口,可以進(jìn)行視頻下載或者直接播放,但是iOS手機(jī)無法播放,且PC端safari瀏覽器也無法播放。 2.問題描述 安卓手機(jī)可以正常播放視頻,iOS手機(jī)無法播放,且PC段safari瀏覽器也無法播放。 3.問題分

    2024年02月22日
    瀏覽(88)
  • ios中關(guān)于video標(biāo)簽poster屬性兼容問題(ios視頻截幀)

    ios中關(guān)于video標(biāo)簽poster屬性兼容問題(ios視頻截幀)

    需求如下 移動(dòng)端h5頁面(微信瀏覽器下)需要上傳視頻并回顯封面,用戶點(diǎn)擊中間的播放三角可以進(jìn)行視頻的預(yù)覽;問題就出現(xiàn)在ios手機(jī)上使用video的poster屬性并不能顯示出視頻封面,而安卓手機(jī)可以正常顯示視頻的第一幀; 效果圖 問題分析: 在ios系統(tǒng)中有個(gè)保護(hù)機(jī)制, 如果

    2024年02月05日
    瀏覽(86)
  • C++ 緩存再排序,解決多線程處理后的亂序問題,不知道思路對不對[撓下巴]

    使用map默認(rèn)會(huì)根據(jù)key排序的原理作緩存,隊(duì)列滿了依次推出,拋棄掉過時(shí)的數(shù)據(jù)

    2024年02月14日
    瀏覽(17)
  • HBuilderX使用uniapp中的video標(biāo)簽開發(fā)視頻應(yīng)用APP,出現(xiàn)視頻覆蓋<view>圖層無法遮住等問題如何解決?

    HBuilderX使用uniapp中的video標(biāo)簽開發(fā)視頻應(yīng)用APP,出現(xiàn)視頻覆蓋<view>圖層無法遮住等問題如何解決?

    請使用cover-image或cover-view cover-image | uni-app官網(wǎng) https://uniapp.dcloud.net.cn/component/cover-image.html#cover-image ? cover-view | uni-app官網(wǎng) https://uniapp.dcloud.net.cn/component/cover-view.html#cover-view 情況1:如上圖,注意要使用以下位置才能達(dá)到遮住的效果? ?情況2:如上圖,就直接用cover-view自定義一

    2024年02月16日
    瀏覽(77)
  • vue3+pinia用戶信息持久緩存(token)的問題

    vue3+pinia用戶信息持久緩存(token)的問題

    對博主來說,這是個(gè)相當(dāng)復(fù)雜的問題。 當(dāng)初在使用vue2+vuex進(jìn)行用戶信息持久登錄時(shí),寫了不下3篇博客,確實(shí)是解決了問題,博客鏈接如下 vue存儲(chǔ)和使用后端傳遞過來的token vue中對token的有效期的理解 vuex刷新頁面丟失登錄的token信息的解決方案 第一篇博客是記錄前端如何使用

    2024年02月13日
    瀏覽(13)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包