在 Cors 中发送原始 cookie 不适用于 VideoJS

2024-01-09

我有以下子域:

  1. stream.example.com
  2. sub.example.com

这两个域都有 SSL 证书并且有效。 我在用videoJS 7.6.6其中有http_streaming https://github.com/videojs/http-streaming图书馆。

On sub.example.com,有一个视频标签将破折号清单设置为包含链接的源stream.example.com.VideoJS 需要包含 laravel cookiessub.example.com当提出请求时stream.example.com链接,但这种情况没有发生,当我下载时HAR result从开发者控制台我看到请求中是空的cookie。

我的 VideoJS HTML

<video-js id="player" class="video-js vjs-big-play-centered">
            <source src="data:application/dash+xml;charset=utf-8;base64,......." type="application/dash+xml" crossorigin="use-credentials">
        </video-js>

清单有效并且包含stream.example.com urls

VideoJS

player = window.player = videojs('player', {
            html5: {
                hls: {
                    withCredentials: true
                }
            },
            controls : true,
            fluid: true,
            controlBar: {
                children: ['playToggle', 'volumePanel', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'seekToLive', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'chaptersButton', 'descriptionsButton', 'subsCapsButton', 'audioTrackButton', 'settingMenuButton', 'qualitySelector','fullscreenToggle']
            },
            preload : 'auto',
            poster : '',
        });
        player.hotkeys({
            volumeStep: 0.1,
            seekStep: 5,
            alwaysCaptureHotkeys: true
        });

        var myplugin = window.myplugin = player.myplugin();
    }(window, window.videojs));

stream.example.com当我在浏览器选项卡中查看视频链接时,有以下标题。

accept-ranges: bytes
access-control-allow-credentials: 1
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Content-Length, Authorization,Range
access-control-allow-methods: GET, PUT, POST, DELETE, OPTIONS
access-control-allow-origin: https://sub.example.com
access-control-max-age: 86400
cache-control: private, max-age=18350
content-length: 69688791
content-range: bytes 0-69688790/69688791
content-type: video/mp4

我下载了 HAR 请求以查看 videoJS 如何发出请求

  {
    "startedDateTime": "2020-03-15T07:53:57.647Z",
    "time": 1.1023430000004737,
    "request": {
      "method": "GET",
      "url": "https://stream.example.com/s/......",
      "httpVersion": "",
      "headers": [
        {
          "name": "Referer",
          "value": "https://sub.example.com/"
        },
        {
          "name": "Sec-Fetch-Dest",
          "value": "empty"
        },
        {
          "name": "User-Agent",
          "value": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"
        },
        {
          "name": "DNT",
          "value": "1"
        },
        {
          "name": "Range",
          "value": "bytes=741-2044"
        }
      ],
      "queryString": [
        {
          "name": "u",
          "value": "....."
        }
      ],
      "cookies": [], // <-- The cookies are EMPTY
      "headersSize": -1,
      "bodySize": 0
    },

Edit 1

我已经通过在 .env 中添加以下内容在 laravel 中共享 cookie

SESSION_DOMAIN = .example.com

cookie 域为sub.example.com show .example.com但没有 cookiestream.example.com

Edit 2

对 videojs 选项请求的响应stream.example.com如下所示

HTTP/2 204 No Content
server: nginx
cache-control: no-cache, private
date: Sat, 21 Mar 2020 06:19:26 GMT
access-control-allow-origin: https://sub.example.com
access-control-allow-methods: GET, POST, HEAD, OPTIONS
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Content-Length, Authorization,Range
access-control-allow-credentials: 1
access-control-max-age: 86400
set-cookie: XSRF-TOKEN=eyJpdiI6ImM4czZNVFRRbWF1emFONXlVMjBGWkE9PSIsInZhbHVlIjoiazVDMUNIR2NqXC9QVUpJdjA3S2lHQ2pKdkJFeHpZdGVodHQ5XC9nZ3JHYVQyUk50V2cxdkQrZ1wvV3ZsOEpDVUhBSiIsIm1hYyI6IjUwYjk4ZjYyZDJmNjg1ZjU4YTg2MDE5ZGNkYmZlOTk5NWVmNTE5ZTRjY2Q1YzQ0ZDI3MzEyNWQ0YmExMzVjZGIifQ%3D%3D; expires=Sat, 21-Mar-2020 10:19:26 GMT; Max-Age=14400; path=/; domain=.example.com
set-cookie: laravel_session=eyJpdiI6IkZvZk9vK2J3YVVhQ2Q4VXpTZjZXN3c9PSIsInZhbHVlIjoiNHZId3orR3dQRDRiOXVFVitKR21NU21DbnVFXC9IcFMxaDFsUXRRUG9VQkFHZnNSdVpRSFBaaHJ5cXdGZDJObUgiLCJtYWMiOiI5ZjllY2IwZjFiNzkxYWMxNTI2ZTFiZWU5OTA4YjNjNzIxZWNkMTBiZjY0ZWQzNDBkMzg5MTEzYjM2MjQ4ODk1In0%3D; path=/; domain=.example.com
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
X-Firefox-Spdy: h2

我想你需要做饼干对所有子域有效, "share"他们,如所描述的如何在子域和域之间共享cookie https://stackoverflow.com/questions/18492576/share-cookie-between-subdomain-and-domain:

如果您使用以下内容,它将在两个域上都可用:

Set-Cookie: name=value; domain=example.com

Try an 选项请求到 "url": "stream.example.com/s......" 并看看您是否得到了如上所述的正确响应 cors 标头?您可以通过 Firefox Developer 工具编辑并重新发送请求。

其他看起来都不错。

  • 为跨源请求设置cookie https://stackoverflow.com/questions/46288437/set-cookies-for-cross-origin-requests
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Cors 中发送原始 cookie 不适用于 VideoJS 的相关文章

  • Angular UI select:从远程服务获取数据

    我正在使用角度用户界面选择 https github com angular ui ui select https github com angular ui ui select 我查看了演示的可用位置这个笨蛋 http plnkr co
  • 使用 Jest 和 React JS TestUtils 测试表单

    我有一个带有 3 个单选按钮的表单 如下所示 假名
  • 在随机位置启动 HTML5

    我有一个大约 2 小时长的音轨 我想在我的网站上使用它 我希望它在页面加载时在随机位置开始播放曲目 使用 HTML5 可以吗 我知道您可以使用 element currentTime 函数来获取当前位置 但是如何在完全下载之前获取曲目的总时
  • 在 R 传单中添加不透明度滑块

    如何在 R leaflet 应用程序中添加滑块来控制特定图层的不透明度 对于这个应用程序 我不想使用闪亮 这里建议 在 R 传单应用程序中添加滑块 https stackoverflow com questions 37682619 add
  • jQuery输入文件点击方法和IE上拒绝访问

    我尝试仅使用一个按钮作为输入文件 它在 Firefox Chrome Safari 中工作正常 但在 IE 中不行 提交表单时我总是收到 访问被拒绝 的消息 代码 input file click 有真正的解决方法吗 我在谷歌上浪费了大约2
  • 此页面上的脚本导致 ie 运行缓慢

    问题就在标题中 IE 行为异常 并说有一个脚本运行缓慢 FF 和 Chrome 没有这个问题 我怎样才能找到问题所在 那个页面有很多JS 手动检查不是一个好主意 EDIT 这是我正在处理的一个项目的页面 但我需要一个工具来查找问题 End
  • 访问 nuxt 配置文件中的存储

    我想添加通过 Nuxt 静态生成的动态路由 我定义了一个客户端 服务器端存储asyncData方法 我想将这个存储值 一个数组 映射到我的nuxt config js文件使其成为 动态 静态 路线图nuxt generate命令 但如何访问
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 将 Firebase FCM 添加到 ReactJS 应用程序

    我正在尝试向我的 ReactJS 应用程序中的用户发送推送通知 我已添加 firebase 请求用户通知权限 这正在发挥作用 但现在我想注册设备令牌 但这给了我错误 消息传递 我们无法注册默认的 Service Worker 无法注册 Se
  • JavaScript中如何确保输入的值是数字而不是字符串?

    我创建了这个函数 function num var x prompt please enter your first number var y prompt please enter your second number if isNaN
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 如何动态调整jqgrid到当前窗口大小?

    如何动态调整jqgrid到当前窗口大小 基于javascript jQuery 最好的例子在这里 TinyMCE 去 http www tinymce com tryit full php http www tinymce com tryi
  • 类中可以有生成器 getter 吗?

    我的意思是吸气剂是发电机 我相信这一切都是 ES6 也许像这样 class a get count let i 10 while i yield i let b new a for const i of b count console lo
  • 如何在 webpack 中渲染嵌套的 SASS?

    采取以下CSS MyComponent color blue Button color red 以及以下 React 组件 import React from react import classes from MyComponent sc
  • Javascript 浮点乘以 100 仍然有错误

    我有一个货币字段的文本输入 我在字段中输入 33 91 并在尝试使用 乘以 100 技术时得到以下结果 var curWth parseInt trans withdraw index val 100 3390 var curWth par
  • 扩展 RegExp 以获取文件扩展名

    我知道 已经有很多基于 RegExp 的解决方案 但是我找不到适合我需求的解决方案 我有以下函数来获取 URL 的各个部分 但我还需要文件扩展名 var getPathParts function url var m url match w
  • 如何重复 ajax 请求,直到满足 RxJS Observable 的条件?

    我正在尝试重复请求 直到响应包含使用 RxJS 的数据 此时我想调用成功 或失败 处理程序 但我在使用 RxJS 时遇到了麻烦 这是我目前的方法 redux observable action observable mergeMap gt
  • 我可以使用 ASP.NET WebForms 母版页在每个内容页中包含不同的 javascript/css 文件吗?

    我有几个使用相同母版页的内容页 它们并不都需要包含在相同的 javascript 和 css 文件中 tag 是否可以更改内容来自内容页面的标签 确实如此 但我建议采取一些不同的做法 我在关闭正文标签的正上方放置了一个内容占位符 然后我填充
  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28
  • 为什么 Node.js 应用程序只能从 127.0.0.1/localhost 访问?

    我本来打算教我的朋友介绍 Node 但是后来 我想知道为什么这个代码来自nodejs org var http require http http createServer function req res res writeHead 20

随机推荐

  • 多线程套接字连接/队列

    SocketClientThread 参考 http eli thegreenplace net 2011 05 18 code sample socket client thread in python http eli thegreen
  • 如何使用 Symfony 和 Jquery 发出 POST Ajax 请求

    我需要在我的 symfony 项目中存储一些地图参数 为此我需要在我的视图中实现一些 Ajax 它将能够将一些信息传递给控制器 我阅读了文档 尝试编写一些代码 但我无法使其工作 而且 Ajax 调试起来确实很痛苦 这是控制器部分 Route
  • dataType 与接受 - Ajax 请求

    我试图理解 Ajax 请求中的 Accept 和 dataType 之间的区别 文件指出 文档 http api jquery com jquery ajax 接受 默认值 取决于数据类型 类型 普通对象 请求标头中发送的内容类型 告诉服务
  • VS 2012 SSDT 构建 CLR,IEnumerable 生成的语法失败

    我正在尝试重用找到的一些代码here http www pawlowski cz 2010 09 sql server 2005 and sql server 2008 regular expressions and pattern mat
  • 在 R 中绘制多元逻辑回归模型的结果

    我想绘制针对调整后的特定自变量 即独立于模型中包含的混杂因素 与结果 二元 关系的多元逻辑回归分析 GLM 的结果 我看过推荐使用以下方法的帖子predict命令后跟curve 这是一个例子 x lt data frame binary o
  • 如何使用实体框架 6 执行全文搜索

    我有疑问 var query DataContext Fotos Where x gt x Pesquisa Contais myTerm 生成的SQL是 SELECT FROM Fotos AS Extent1 WHERE Extent1
  • 在 WebClient 中接受 Cookie?

    我刚刚开始尝试 C WebClient 我所拥有的是下面的代码 它从网站获取 html 代码并将其写入 txt 文件中 我遇到的唯一问题是 某些网站要求您在使用该网站之前接受 cookie 这导致的原因是它没有将真正的网站 html 代码写
  • Sharpsign 等号阅读器宏的示例?

    我见过这个使用过一次 但无法理解它的作用 参考文献说它是 n object读取为以 object 作为其打印表示的任何对象 然而 该对象被标记为 n 这是必需的 无符号十进制整数 可通过语法 n 进行参考 标签的范围是最外层正在读取的表达式
  • 计算/异步数据获取

    我正在尝试创建简单的 Vue CouchDB 应用程序 使用 Vanilla JS 可以正常工作 但我无法通过 Promise 或异步函数从数据库获取数据到我的 vue 实例 这是我的代码 app html div table thead
  • Cassandra 中写入总是比读取快吗?

    我在听这次演讲 https www youtube com watch v zyZ35YyT 8Cassandra 中的数据建模 演讲者的总体说法是 Cassandra 中的写入速度比读取速度快 这种情况总是正确的吗 如果是这样为什么 尽管
  • Python 分布式计算(作品)

    我正在使用旧线程发布试图解决相同问题的新代码 什么构成了安全的泡菜 this http docs python org library crypto html sock py from socket import socket from s
  • _Bool 和 bool:如何解决使用 _Bool 的 C 库的问题?

    我用 C 语言编写了一系列数据结构和函数 其中一些使用 Bool 数据类型 当我开始时 该项目将是纯 C 的 现在我正在研究使用基于 C 的 GUI 工具包 并将后端代码放入库中 但是 在编译 C GUI 时 编译器会发出以下错误 ISO
  • Angular ng-submit 被调用两次

    我有一个有角度的表单 其提交方法被击中两次 我不明白为什么 我对 Angular 还很陌生 所以我可能忽略了一些相当简单的东西 Html div div
  • 如何完全禁用 WooCommerce 产品类型的运输?

    我想禁用为特定产品类型选择运输方式的要求 此处为 预订 产品类型 在结账时 因此 他们应该能够购买无需运输方式的产品 要在购物车中有特定产品类型时完全禁用运输 您将使用以下命令 add filter woocommerce cart nee
  • 自定义 Flutter Service Worker

    Flutter 自动生成 Service Workerflutter service worker js在为网络构建时 但我想为第三方路由添加我自己的获取 缓存规则 我怎样才能做到这一点 到目前为止 我发现的唯一解决方法是制作一个脚本来后处
  • JavaScript 中的“双波浪号”(~~) 运算符是什么? [复制]

    这个问题在这里已经有答案了 我在一些代码中看到了这一点 但我不知道它的作用 var jdn function y m d var tmp m lt 2 1 0 return 1461 y 4800 tmp 4 367 m 2 12 tmp
  • -Android 3 浏览器中的 webkit-tap-highlight-color

    我们有一个包含许多输入的表单 每当我点击表单时 它就会突出显示为灰色 I have webkit tap highlight color rgba 255 255 255 0 我也使用了rgba 255 255 255 0 这会在 iOS5
  • Microsoft.Graph 获取组的所有用户

    我正在使用 Microsoft Graph 我想返回特定组中所有用户的列表 我找不到任何关于此的易于理解的信息 我尝试过使用 Request Expand x gt x Members 但这只返回 20 个用户 并且它们不会被分页 参见he
  • React-bootstrap 按钮 bsStyle

    好吧 我显然错过了一些东西 但现在无法弄清楚 import React from react import Button from react bootstrap let App React createClass render funct
  • 在 Cors 中发送原始 cookie 不适用于 VideoJS

    我有以下子域 stream example com sub example com 这两个域都有 SSL 证书并且有效 我在用videoJS 7 6 6其中有http streaming https github com videojs h