• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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>

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

    上一篇:Windows DNS服务器曝蠕虫级漏洞,已存在长达17年
    下一篇:在Linux中查看所有正在运行的进程的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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