Apache中配置支持CORS(跨域资源共享)实例

 更新时间:2015年01月20日 09:46:42   投稿:junjie  
这篇文章主要介绍了Apache中配置支持CORS(跨域资源共享)实例,本文给出了一个完整的apache、PHP、JavaScript结合实现的跨域资源共享实例,需要的朋友可以参考下

当使用ajax跨域请求时,浏览器报错:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.肯定是跨域的问题,如果用jsonp或者proxy的方式进行修改的话未免需要太大的工程量,所以采用CORS这种比较简单高效的技术。相比JOSP的方式,CORS更为高效。JSONP由于它的原理只能实现GET请求,而CORS支持所有类型的HTTP请求。使用CORS,可以使用普通的ajax实现跨域,这对于前端来说是极大的福音了,这个技术被现在大多数浏览器所普遍支持,因为跨域已经是普遍的要求,浏览器肯定会逐渐流出适当的‘后门'出来专门用以跨域。

浏览器支持情况

经本人测试IE浏览器中IE10及以上才可正常发送请求

1.服务器端对于CORS的支持,是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问,也就是相应的‘后门'。

设置Apache:Apache需要使用mod_headers模块来激活HTTP头的设置,它默认是激活的。你只需要修改Apache配置文件中的httpd.conf文件:

原始代码

复制代码 代码如下:

<Directory />
AllowOverride none
Require all denied
</Directory>

改为下面代码
复制代码 代码如下:

<Directory />
Require all denied
Header set Access-Control-Allow-Origin *
</Directory>

 

在处理请求的PHP文件中设置:

复制代码 代码如下:

<?php
    header("Access-Control-Allow-Origin:*");
    //处理请求输出数据

?>


配置的含义是允许任何域发起的请求都可以获取当前服务器的数据。当然,这样有很大的危险性,恶意站点可能通过XSS攻击我们的服务器。所以我们应该尽量有针对性的对限制安全的来源,例如下面的设置使得只有http://jb51.net/这个域才能跨域访问服务器的API。

httpd.conf中:

复制代码 代码如下:

Header set Access-Control-Allow-Origin https://www.jb51.net

php文件中:

复制代码 代码如下:

<?php
header("Access-Control-Allow-Origin:https://www.jb51.net");

前台代码:

复制代码 代码如下:

<script type="text/javascript">
function createCORSRequest(method, url) {
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// 此时即支持CORS的情况
// 检查XMLHttpRequest对象是否有“withCredentials”属性
// “withCredentials”仅存在于XMLHTTPRequest level 2对象里
} else {
// 否则检查是否支持XDomainRequest
// XDomainRequest仅存在于IE中,是IE用于支持CORS请求的方式
xhr = new XDomainRequest();
}
xhr.open(method, url, true);
xhr.send();
xhr.onload = function(){
alert(xhr.responseText);
}
}
createCORSRequest('GET', "http://192.168.1.58/t.php");
</script>

相关文章

  • 在Ubuntu中格式化U盘的几种常用方法

    在Ubuntu中格式化U盘的几种常用方法

    本文介绍了在Ubuntu系统中格式化U盘的两种方法:使用图形界面和使用终端命令,通过这些方法,可以解决U盘格式化被写入保护的问题,文章有详细的代码示例供大家参考,需要的朋友可以参考下
    2025-10-10
  • Linux启动Java程序jar包Shell脚本方式

    Linux启动Java程序jar包Shell脚本方式

    文章介绍了如何创建一个Shell脚本来简化在Linux环境中启动Java程序jar包的过程,该脚本可以检查jar包的状态、启动、停止和重启项目,只需修改脚本中的变量并将其与jar包放在同一目录下,即可方便地使用该脚本
    2024-12-12
  • 宝塔linux面板命令大全

    宝塔linux面板命令大全

    这篇文章主要介绍了宝塔面板Linux版的命令大全,需要的朋友可以参考下
    2020-06-06
  • Ubuntu/Debian 自有软件包构建私有源详解

    Ubuntu/Debian 自有软件包构建私有源详解

    这篇文章主要介绍了Ubuntu/Debian 自有软件包构建私有源详解的相关资料,这里介绍详细步骤,需要的朋友可以参考下
    2016-11-11
  • 虚拟机安装centos7的坑之找不到网卡问题及解决

    虚拟机安装centos7的坑之找不到网卡问题及解决

    这篇文章主要介绍了虚拟机安装centos7的坑之找不到网卡问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 解决虚拟机NAT模式无法上网问题

    解决虚拟机NAT模式无法上网问题

    文章主要介绍了确认虚拟机网络连接问题的两个步骤:首先检查虚拟机的IP地址是否与主机在同一网段,其次确保虚拟机相关服务已开启
    2024-12-12
  • linux的硬链接和软连接的区别及说明

    linux的硬链接和软连接的区别及说明

    这篇文章主要介绍了linux的硬链接和软连接的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Linux服务器安装Windows虚拟机实践

    Linux服务器安装Windows虚拟机实践

    本文详细介绍了在Linux系统中使用VirtualBox安装Windows虚拟机的步骤,包括安装VirtualBox、创建虚拟机、设置虚拟机参数、安装Windows操作系统以及安装增强功能
    2026-01-01
  • Linux常用命令之grep命令用法详解

    Linux常用命令之grep命令用法详解

    这篇文章主要介绍了Linux常用命令grep命令用法详解,grep命令用于对文件和文本执行重复搜索任务的Unix工具,可以通过grep命令指定特定搜索条件来搜索文件及其内容以获取有用的信息。对此感兴趣可以了解一下
    2020-07-07
  • CentOS6.5环境下使用rsync增量同步备份文件的方法

    CentOS6.5环境下使用rsync增量同步备份文件的方法

    这篇文章主要介绍了CentOS6.5环境下使用rsync增量同步备份文件的方法,结合实例形式分析了rsync进行文件同步备份操作的相关命令与使用技巧,需要的朋友可以参考下
    2018-04-04

最新评论