Apache 2.4 跨域
Posted
技术标签:
【中文标题】Apache 2.4 跨域【英文标题】:Apache 2.4 cross domain 【发布时间】:2017-10-01 04:06:45 【问题描述】:我启用了 ubuntu 16.04 和 apache 2.4 和 mod_headers。我有一个在 default-ssl.conf 中配置的 https 站点,它在 000-default 配置文件中的同一个 apache 中使用端口 8000 中的 http 站点。
我已经用 certbot 创建了我的证书。我已经尝试了所有 Headers 设置访问权限,但 apache 仍然不接受 http 链接。现在我在 default-ssl 中有这个:
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "X-Requested-With, Content-
Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
RewriteEngine On
RewriteCond %REQUEST_METHOD OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
问题可能出在证书上吗?浏览器接受证书但不接受跨域。 错误示例:在安全页面上加载混合(不安全)显示内容“http://ipaddresss//appointments.png”
【问题讨论】:
“apache 不接受 http 链接” 是什么意思?你的意思是“https”?无论哪种方式,“不接受”是什么意思?你看到了什么确切的错误信息,或者你期望发生什么没有发生?无论如何,这似乎与 CORS 没有任何关系。Access-Control-*
标头影响的唯一事情是浏览器是否允许前端 javascript 代码访问使用 XHR 或 Fetch API 发出的请求的响应。
这是错误:在安全页面上加载混合(不安全)显示内容ipaddress/appointments.png”
谢谢,我看到您更新了答案以添加该详细信息。所以问题是,在您的内容的某个地方,您有一个代码或标记或 CSS 请求http://ipaddresss//appointments.png
,或者服务器正在将https://ipaddresss//appointments.png
(https)的请求重定向到http://ipaddresss//appointments.png
(非https)。
不能在 https 中使用 http 链接吗?我已经阅读了这些标题,您可以在 https 中使用 http 链接。
不,不能在 https 文档中使用嵌入的 http 资源。这样做会导致浏览器发出混合内容错误,就像您的问题中引用的错误一样。您在服务器端添加的任何标头都不会导致浏览器忽略混合内容错误。没有办法避免它们(除非确保所有内容都使用 https 提供)。
【参考方案1】:
我设法让它工作。对于任何有兴趣的人。我在 /etc/apache/sites-available/000-default.conf 中添加了两个虚拟主机(端口 443 和 80)。我禁用了 ssl 站点并仅启用了 000-default
a2dissite default-ssl
a2ensite 000-default
而且我还在VirtualHost 0.0.0.0:443里面添加了
RewriteEngine On
RewriteCond %REQUEST_METHOD OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
【讨论】:
以上是关于Apache 2.4 跨域的主要内容,如果未能解决你的问题,请参考以下文章