当CORS及其网页的URL都使用完全相同的URL时,我仍然会在Firefox开发控制台中收到相同的错误消息。
浏览器控制台消息是:
Cross-Origin Request Blocked: \
The Same Origin Policy disallows reading the remote resource \
at https://egbert.net/fonts/fontawesome-webfont.woff2?v=4.7.0. \
(Reason: CORS header ‘Access-Control-Allow-Origin’ does not \
match ‘https://egbert.net’).
Access-Control-Allow-Origin: https://egbert.net
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range
Content-Security-Policy: \
default-src 'none'; \
base-uri 'none'; \
script-src 'strict-dynamic'; \
object-src 'none'; \
style-src 'self'; \
img-src https://egbert.net/favicon.ico https://egbert.net/images/ https://egbert.net/blog/articles/*/images/*.png data:; \
media-src https://egbert.net/media/ data:; \
frame-src https://egbert.net/frames/; \
frame-ancestors 'self'; \
worker-src 'self'; \
child-src https://egbert.net/frames/; \
font-src https://egbert.net/fonts/; \
connect-src 'self' https://egbert.net/; \
form-action 'none'; \
require-trusted-types-for; \
trusted-types template; \
sandbox; \
report-uri https://ssoseo1.report-uri.com/r/d/csp/enforce; \
report-to endpoint-1; \
upgrade-insecure-requests; \
block-all-mixed-content;
Feature-Policy: accelerometer 'none'; camera 'none'; fullscreen 'self'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; midi 'none'; notifications 'none'; payment 'none'; push 'none'; sync-xhr 'none'; speaker 'none'; usb 'none'; vibrate 'none';
Referrer-Policy: no-referrer
HTML设置
<link rel="stylesheet" href="https://egbert.net/css/m-dark.compiled.css">
*/@font-face {
font-family:'FontAwesome';
src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');
src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),
url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),
url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),
url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),
url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
font-weight:normal;
font-style:normal
}
我确保所有字体文件都可以由同一浏览器在单独的选项卡中下载。
更奇怪的是,错误消息暗示了“远程资源”。它们是完全相同的URL。
没有加载插件,这是安全模式火狐v73.0.1。
当我替换相对路径('../fonts') 在具有绝对目录路径的 CSS 的 /@font-face
中。
当我将方案和域 (https://egbert.net/) 添加到 CSS 的 /@font-face
前面的绝对目录路径以获得完整的 URL 路径时,它没有任何变化。
这与以下问题不同:
将CSP策略中的沙盒
替换为沙盒允许同源
将解决此问题。
解释:
问题描述的CORS问题最终是由浏览器将原始值设置为<code>null</code>引起的。因此,尽管AccessControlAllowOrigin
响应标头设置为通常预期的原始值(与浏览器地址栏中显示的URL匹配),但实际上并不匹配,因为浏览器已将原始值设置为null
。
所以你最终会陷入一个看似矛盾的境地:文档似乎与它自己的来源不匹配。
https://stackoverflow.com/a/42242802/441757的答案概括了浏览器将原点设置为< code>null的所有情况。问题中案例的具体原因源于https://html.spec.whatwg.org/multipage/#attr-iframe-sandbox的要求,即如果设置了< code >沙箱:
内容被视为来自独特的来源,表单、脚本和各种可能令人讨厌的API被禁用,链接被阻止以其他浏览上下文为目标,插件被保护。<code>allow same origin</code>关键字导致内容被视为来自其真实来源,而不是强制其成为唯一来源。
所以底线是:每当您指定沙盒
时,在大多数情况下,您希望使用包含的允许同源
关键字来指定它-以防止令人惊讶和难以排除的问题/副作用,例如问题中描述的CORS问题。
我在这里遵循一个简单的教程: http://addyosmani.github.io/backbone-fundamentals/ 我有一个节点.js服务器在本地主机端口 4711 上运行 我让tomcat在端口8082上运行,并让backbone.js应用程序作为客户端在该服务器上以index.html身份启动。 但我明白了: XMLHttpRequest 无法加载 ...api/books.本
问题内容: 我看到以下错误: 使用此代码: 是什么原因引起的,如何解决? 问题答案: 在当前域之外发出ajax请求时,Javascript是受限制的。 例1:您的域名为example.com,并且您想向test.com提出请求=>您不能。 例2:您的域名是example.com,并且您想向inner.example.com发送请求,但是您不能。 例3:您的域名为example.com:80,并且您
我已经设置了一个带有套接字io的节点服务器,并尝试通过另一台服务器连接到它。但是,不同计算机上的一些浏览器会给我这个错误并使其始终重新连接: XMLHttp请求无法加载https://serverDomain.net:3000/socket.io/?EIO=3 我的js配置: 我正在使用节点 8.0 和套接字 io 2.2,您的帮助将不胜感激。 编辑:这是客户端代码:
我在React前端使用keycloak-js适配器时遇到了一个问题。 登录后, 终结点上重复的“访问控制-允许-源”会导致 CORS 错误: CORS策略阻止了从源https://example.comhttps://accounts.example.com/auth/realms/myRealm/protocol/openid-connect/token对XMLHttpRequest的访问:访问
错误:我在Firefox中得到以下内容:外国站点查询被阻止:同源策略不允许读取远程资源http:// localhost:8080 / api / v1 / post /。(原因:“访问控制-允许-源”CORS 标头不存在) 我已经花了几个小时允许CORS与我的Spring Boot服务器通信,以使我的REACT UI与服务器通信。关于堆栈溢出,有许多措辞类似的问题,但建议的解决方案中没有一个解决
问题内容: 我试图使CORS请求正常工作。使用以下JS代码,我得到此错误: 这是JS代码: 当我使用chrome的devtools查看网络时,我发现确实没有标题。但是,当我手动加载该网站时,它就存在了! 我使用以下代码设置标题: 希望能有所帮助! 问题答案: 它说这意味着您的服务器应用程序需要调整以接受跨源请求。由于安全原因,默认情况下跨源请求不起作用。您需要启用它们。 对于django,有一个维