Access to CSS stylesheet at ‘http://xxx‘ from origin ‘http://xxx‘ has been blocked by CORS policy

文章描述了一个在使用GoogleChrome浏览器时遇到的访问网站错误,错误信息涉及到CORS政策和安全上下文问题。问题根源在于尝试访问的CSS资源在更私密的地址空间。解决方案是改用HTTPS协议访问网站,确保浏览器处于安全上下文中。

问题重现:

Google Chrome浏览器访问网站报错:

Access to CSS stylesheet at 'http://xxx/theme/default/zh-cn.default.css?v=12.3.3'from origin 'http://xxx' has been blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space 'private*.

 排查:

使用Microsoft Edge浏览器可以访问正常网站,那就是Google Chrome浏览器的问题了

解决办法

如果是Google Chrome浏览器,需要使用https协议访问网站

### 解决CORS策略阻止从null origin访问本地CSS文件的问题 跨域资源共享(CORS)策略是一种安全机制,旨在防止浏览器中的恶意脚本对用户数据进行未经授权的访问。当一个资源(如CSS文件)被加载时,浏览器会检查该资源是否允许来自请求源(origin)的访问。如果请求的源是`null`(例如,从`file://`协议加载页面),则服务器需要显式允许`null`源访问资源[^1]。 为了使本地CSS文件能够被正确加载,可以采取以下方法: 1. **配置服务器以支持CORS** 在服务器端设置适当的CORS头,允许`null`源访问资源。可以通过在HTTP响应中添加`Access-Control-Allow-Origin`头来实现。例如,在Apache或Nginx服务器上配置如下: ```apache Header set Access-Control-Allow-Origin "null" ``` 或者在Nginx中: ```nginx add_header Access-Control-Allow-Origin "null"; ``` 2. **使用HTTP服务器而非file://协议** 如果可能,避免直接通过`file://`协议加载页面。改用本地HTTP服务器(如Python的SimpleHTTPServer、Node.js的http-server或Apache/Nginx)来提供资源。这将确保请求的源不再是`null`,而是类似于`http://localhost`的合法源。 例如,使用Python启动一个简单的HTTP服务器: ```python python -m http.server 8000 ``` 3. **修改浏览器的安全策略(仅适用于开发环境)** 在开发环境中,可以通过禁用CORS检查来绕过限制。例如,在Chrome中可以使用`--disable-web-security`标志启动浏览器。需要注意的是,这种方法仅适用于开发和调试,不适用于生产环境。 ```bash google-chrome --disable-web-security --user-data-dir=/tmp/chrome_dev_session ``` 4. **嵌入CSS代码到HTML文件中** 如果无法更改服务器配置或启动HTTP服务器,可以将CSS代码嵌入到HTML文件中,而不是作为外部文件加载。这样可以避免CORS问题,但可能会降低代码的可维护性。 ```html <style> body { background-color: #f0f0f0; } </style> ``` 5. **调整Tomcat等应用服务器的配置(如果适用)** 如果使用的是Tomcat等应用服务器,可以参考引用内容[^2],确保没有潜在的空指针异常或安全约束导致的问题。例如,确认RealmBase.hasRole()方法是否正确传递了Wrapper对象,并确保JNDI配置不会干扰CORS行为。 ```python # 示例:Python脚本用于启动简单HTTP服务器 import http.server import socketserver PORT = 8000 Handler = http.server.SimpleHTTPRequestHandler with socketserver.TCPServer(("", PORT), Handler) as httpd: print(f"Serving on port {PORT}...") httpd.serve_forever() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值