【问题标题】:Apache 2.4 cross domainApache 2.4 跨域
【发布时间】: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 提供)。

标签: apache ubuntu ssl cors cross-domain


【解决方案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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2020-06-21
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多