Apache跨域资源访问报错问题解决方案

 更新时间:2020年07月16日 16:14:10   作者:网络虫  
这篇文章主要介绍了Apache跨域资源访问报错问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

很多时候,大中型网站为了静态资源分布式部署,加快访问速度,减轻主站压力,会把静态资源(例如字体文件、图片等)放在独立服务器或者CDN上,并且使用独立的资源域名(例如res.test.com)

但是在实际部署中,会发现浏览器无法载入这些不同域名的资源,firefox控制台会报错:

<span role="presentation" class="objectBox objectBox-errorMessage "><span class="errorMessage ">已阻止跨源请求:同源策略禁止读取位于 http://xxxxx 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。</span></span>

已阻止跨源请求:同源策略禁止读取位于 http://xxxxx 的远程资源。(原因:CORS 请求失败)。

这是因为现代浏览器将其定义为跨域资源而不允许加载

理解跨域首先必须要了解同源策略。同源策略是浏览器上为安全性考虑实施的非常重要的安全策略。

何谓同源:

URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。

同源策略:

浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。 (白帽子讲web安全[1])
从一个域上加载的脚本不允许访问另外一个域的文档属性。

那么关键是如何解决呢,其实很简单,只要在静态资源服务器上,增加一个头信息:

Access-Control-Allow-Origin *

本文就apache进行操作,nginx大同小异

首先编辑httpd.conf

找到这行

#LoadModule headers_module modules/mod_headers.so

把#注释符去掉

LoadModule headers_module modules/mod_headers.so

目的是开启apache头信息自定义模块

然后在独立资源域名的虚拟主机添加一行

Header set Access-Control-Allow-Origin *

意思是对这个域名的资源进行访问时,添加一个头信息

重启apache

再访问,OK!

NameVirtualHost 10.0.0.2:80
<VirtualHost 10.0.0.2:80>
  DocumentRoot /var/www/host.example.com
  ServerName host.example.com
  JkMount /webapp/* jkworker
  Header set Access-Control-Allow-Origin "*"
  RewriteEngine on
  RewriteRule  ^/otherhost http://otherhost.example.com/webapp [R,L]
</VirtualHost>

And here's an example of the Apache config for the second:

NameVirtualHost 10.0.1.2:80
<VirtualHost 10.0.1.2:80>
  DocumentRoot /var/www/otherhost.example.com
  ServerName otherhost.example.com
  JkMount /webapp/* jkworker
  Header set Access-Control-Allow-Origin "*"
</VirtualHost>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • linux中如何查看Raid磁盘阵列信息

    linux中如何查看Raid磁盘阵列信息

    这篇文章主要介绍了linux中如何查看Raid磁盘阵列信息的相关资料,需要的朋友可以参考下
    2015-09-09
  • apache与iis下让html格式的页面也同样具有shtml的动态解析

    apache与iis下让html格式的页面也同样具有shtml的动态解析

    apache下让html格式的页面也同样具有shtml的动态解析,方便有此需要的朋友。
    2011-03-03
  • Linux 在Shell脚本中使用函数实例详解

    Linux 在Shell脚本中使用函数实例详解

    这篇文章主要介绍了Linux 在Shell脚本中使用函数实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • springcloud alibaba nacos linux配置的详细教程

    springcloud alibaba nacos linux配置的详细教程

    这篇文章主要介绍了springcloud alibaba nacos linux配置,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • PHP脚本内存泄露导致Apache频繁宕机解决方法

    PHP脚本内存泄露导致Apache频繁宕机解决方法

    这篇文章主要介绍了PHP脚本内存泄露导致Apache频繁宕机解决方法,本文的原因是因为MaxRequestsPerChild参数没有配置正确,配置MaxRequestsPerChild后解决了本文中的问题,需要的朋友可以参考下
    2014-09-09
  • 配置Apache支持shtml(SSI)的方法

    配置Apache支持shtml(SSI)的方法

    这篇文章主要介绍了配置Apache支持shtml(SSI)的方法,需要的朋友可以参考下
    2014-03-03
  • Linux配置远程SSH无密码登录

    Linux配置远程SSH无密码登录

    这篇文章主要为大家详细介绍了Linux配置远程SSH无密码登录的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • linux挂载本地yum源问题

    linux挂载本地yum源问题

    这篇文章主要介绍了linux挂载本地yum源问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Ubuntu基础教程之apt-get命令

    Ubuntu基础教程之apt-get命令

    这篇文章主要给大家介绍了关于Ubuntu基础教程之apt-get命令的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Ubuntu系统具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Linux中使用nfs共享存储的方式

    Linux中使用nfs共享存储的方式

    NFS是一种基于TCP/IP传输的网络文件系统协议,通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源,本文给大家介绍Linux中使用nfs共享存储的相关知识,感兴趣的朋友跟随小编一起看看吧
    2023-10-10

最新评论