我在本地運行 NGINX Web 服務器,但我不明白為什么盡管access-control-allow-origin: www.site-A.test回應中存在,但www.site-B.test仍然允許原始頁面從 origin 加載資源www.site-A.test。
我希望該視頻檔案www.site-A.test不會在www.site-A.test. 這不是我在當地觀察到的行為。
這兩個站點都在 macOS 上的 NGINX 1.21.4 和 Docker 環境中本地運行。在 Firefox Developer Edition 95 中測驗。
示例的再現
(我正在測驗的實際主機)
組態檔
http {
map $sent_http_content_type $cors {
~*video/ $scheme://$server_name;
}
# There are two more blocks that handle redirection to this server block
server {
listen 8443 ssl http2;
listen [::]:8443 ssl http2;
server_name www.nginx.test;
# Access-Control-Allow-Origin
add_header Access-Control-Allow-Origin $cors always;
}
# There are two more blocks that handle redirection to this server block
server {
listen 8443 ssl http2;
listen [::]:8443 ssl http2;
server_name www.nginx1.test;
# Access-Control-Allow-Origin
add_header Access-Control-Allow-Origin $cors always;
}
}
埠8334是容器的埠。兩個網站都監聽443埠。
在這種情況下,每個content-type: video/mp4都只能在資源來自的主機內共享。

uj5u.com熱心網友回復:
您觀察到的是預期行為。您的問題的前提是不正確的:您可以使用<video>HTML 元素在您的頁面中嵌入視頻,而無需服務器專門允許您的來源。請參閱MDN 關于同源策略的頁面:
以下是一些可能嵌入跨域資源的示例:
- [...]
<video>和播放的媒體<audio>。
您確實需要啟用 CORS 的資源的情況僅限于您想要在<canvas>元素中使用視頻的情況。
如果要防止第三方網站嵌入視頻,可以在服務器端實施一些資源隔離策略。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369495.html
