apache如何解决跨域资源访问

12天前    标签:服务器    阅读:130    评论:0


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

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

已阻止跨源请求:同源策略禁止读取位于 http://xxxxx 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。

已阻止跨源请求:同源策略禁止读取位于 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!

示例:

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


【腾讯云】云产品采购季,助力行业复工。1核2G云服务器,首年99元

‘简忆博客’微信公众号 扫码关注‘简忆博客’微信公众号,获取最新文章动态
转载:请说明文章出处“来源简忆博客”。http://www.tpxhm.com/adetail/293.html

×
觉得文章有用就打赏一下文章作者
微信扫一扫打赏 微信扫一扫打赏
支付宝扫一扫打赏 支付宝扫一扫打赏

文章评论(0)

登录

博主信息

头像

今天努力一点,知识一点点积累,谢谢那个曾经努力的自己!

职业:Web工程师

Email:2938039696@qq.com

学习交流群:简忆blogs技术群

项目合作:2938039696

置顶推荐

站点信息

1067运行天数

333文章数量

主题框架:Foundation5
网站地图:XML网站地图
微信公众号:扫码关注公众号
公众号

打赏本站

如果你觉得本站很棒,可以通过扫码支付打赏哦!
微信扫码:你说多少就多少~
微信扫码
支付宝扫码:你说多少就多少~
支付宝扫码
×
×
×