混合内容页面:请求不安全的样式表错误

Kar*_*zin 25 javascript css php .htaccess https

我有一个网站正在研究它.当我用http://协议打开任何页面时,每个东西都正确加载,但是当我尝试使用https协议加载页面时,页面加载但没有css和javascript文件.
控制台显示以下错误.

混合内容:" https://www.example.com/index.php?main_page=login " 页面是通过HTTPS加载的,但请求了一个不安全的样式表" http://www.example.com/site_map.html " .此请求已被阻止; 内容必须通过HTTPS提供.

我认为问题是浏览器在https协议请求时无法加载任何css文件.
问题是htaccess文件,因为当我删除它时,css文件正确加载.

页面和css文件加载到浏览器中,其URL中的https如下所示

<link rel="stylesheet" type="text/css" href="https://www.example.com/includes/templates/classic/css/style1.css">
<link rel="stylesheet" type="text/css" href="https://www.example.com/includes/templates/classic/css/style2.css">
Run Code Online (Sandbox Code Playgroud)

当浏览器尝试加载css文件时,会将其重定向到

http://www.example.com/site_map.html  
Run Code Online (Sandbox Code Playgroud)

如何让htaccess允许https打开特定文件夹中的css和js文件?

谢谢

更新 htaccess文件内容

RewriteEngine On
RewriteCond %{SERVER_PORT} ^443$
RewriteRule (.*) http://www.example.com/$1 
###############################################################################
# Common directives
###############################################################################
# NOTE: Replace /shop/ with the relative web path of your catalog in the "Rewrite Base" line below:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.example.com/ [R=301,L]

#RewriteBase /

###############################################################################
# Start Ultimate SEO URLs
###############################################################################

# Original (unchanged) URL formats
RewriteRule ^(.*)-p-([0-9]+)(.*)$ index\.php?main_page=product_info&products_id=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-c-(.*)-p(.*)\.html$ /index.php?main_page=$4&cPath=$2&sort=$5&page=$3
RewriteRule ^(.*)-c-([0-9_]+)(.*)$ index\.php?main_page=index&cPath=$2&%{QUERY_STRING} [L]
RewriteRule ^(.*)-ez-(.*).html$ index.php?main_page=page&id=$2 [L]

# All other pages
# Don't rewrite real files or directories
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index\.php?main_page=$1&%{QUERY_STRING} [L]


# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule   index.html$  index.php [QSA] 


# 480 weeks
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>

# 2 DAYS
<FilesMatch "\.(xml|txt)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</FilesMatch>

# 2 HOURS
<FilesMatch "\.(html|htm)$">
Header set Cache-Control "max-age=7200, must-revalidate"
</FilesMatch>
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript

RewriteEngine on
RewriteBase /

ErrorDocument 404 /index.php
RewriteRule   index.html$  index.php [QSA]
Run Code Online (Sandbox Code Playgroud)

joe*_*ews 14

如果你能成为CSS等通过HTTPS,最好的解决办法是使用//作为该计划资产的URL.

这意味着"使用相同的方案(有时称为协议)作为父文档",即https如果页面使用则使用https.例如:

<link rel="stylesheet" href="//mysite.com/styles.css">
<script src="//mysite.com/app.js"></script>
Run Code Online (Sandbox Code Playgroud)


小智 13

最有可能在你的HTML代码中你有类似的东西

<link href="http://someSite.com/css/someStyle.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

你应该把它改成

<link href="https://someSite.com/css/someStyle.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

您所指的页面也是.html而不是CSS,但我猜这是一个错字...

  • 我的css文件中有一个http。更改为htpps也可以。谢谢! (2认同)

Sou*_*jiv 8

在 Drupal 8.0.1 中遇到类似的错误

错误-混合内容:“”处的页面已通过 HTTPS 加载,但请求了不安全的样式表“”。该请求已被阻止;内容必须通过 HTTPS 提供

解决方案- 打开 .htaccess 文件并添加以下行 标头始终设置 Content-Security-Policy“upgrade-insecure-requests;”


小智 7

这是您的问题:

RewriteCond %{SERVER_PORT} ^443$
RewriteRule (.*) http://www.example.com/$1 
Run Code Online (Sandbox Code Playgroud)

您不允许SSL请求(HTTPS请求使用443端口号)。尝试删除这些行。