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

当使用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 http://www.jb51.net

php文件中:

复制代码 代码如下:

<?php
header("Access-Control-Allow-Origin:http://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>

时间: 2024-09-20 21:13:52

Apache中配置支持CORS(跨域资源共享)实例_Linux的相关文章

OSS跨域资源共享(CORS)错误及排除

介绍 跨域资源共享(Cross-Origin Resource Sharing, CORS),介绍及配置请参看 跨域资源共享使用指南 . 配置项 CORS配置有以下几项: 来源(AllowedOrigin):允许跨域请求的来源,可以同时指定多个.配置时需带上完整的域信息,例如http://10.100.100.100:8001或https://www.aliyun.com.注意, 不要遗漏了协议名http或https ,如果端口不是默认的80,还需要带上端口.如果不能确定的域名,可以打开浏览器的

js跨域资源共享 基础篇_javascript技巧

本文详细介绍了javascript跨域资源共享,供大家参考,具体内容如下 1.为什么提出跨域资源共享(CORS)?    因为XHR实现ajax的安全限制是:XHR 对象只能访问与包含它的页面位于同一个域中的资源 2.如何实现跨域?(跨浏览器) // 跨浏览器创建并返回CORS对象 // param method : 请求的方式, get or post // param url : 跨域请求的url // return xhr : 返回的跨域资源对象 function createCORSRe

跨域资源共享 CORS 详解

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制. 本文详细介绍CORS的内部机制. (图片说明:摄于阿联酋艾因(Al Ain)的绿洲公园) 一.简介 CORS需要浏览器和服务器同时支持.目前,所有浏览器都支持该功能,IE浏览器不能低于IE10. 整个CORS通信过程,都是浏览器自动完成,不需要用户参与.对于开发者来说,C

跨域资源共享(CORS)安全性浅析

一.背景提起浏览器的同源策略,大家都很熟悉.不同域的客户端脚本不能读写 对方的资源. 但是实践中有一些场景需要跨域的读写,所以出现了一些hack的方式来跨域.比如在同域内做一个代理,JSON-P等.但这些方式都存在缺陷,无法完美的实现跨域读写.所以在XMLHttpRequest v2标准下,提出了CORS(Cross Origin Resourse-Sharing)的模型,试图提供安全方便的跨域读写资源.目前主流浏览器均支持CORS.二.技术原理CORS定义了两种跨域请求,简单跨域请求和非简单跨

谈谈如何在ASP.NET Core中实现CORS跨域_实用技巧

CORS(Cross-origin resource sharing)是一个W3C标准,翻译过来就是 "跨域资源共享",它主要是解决Ajax跨域限制的问题. CORS需要浏览器和服务器支持,现在所有现代浏览器都支持这一特性.注:IE10及以上 只要浏览器支持,其实CORS所有的配置都是在服务端进行的,而前端的操作浏览器会自动完成. 在本例中,将演示如何再ASP.NET Core中实现CORS跨域. 前期准备 你需要windows系统. 你需要安装IIS. 推荐使用VS2015 Upda

[CORS:跨域资源共享] 同源策略与JSONP

Web API普遍采用面向资源的REST架构,将浏览器最终执行上下文的JavaScript应用Web API消费者的重要组成部分."同源策略"限制了JavaScript的跨站点调用,这必然导致Web API不能垮域提供资源.如果Web API仅限于为"同源客户端"提供资源,那么它都对不起自己的名字,因为Web本身是一个开放的协议.那么ASP.NET Web API通过怎样的方式来实现跨域资源共享呢? 同源策略 浏览器是访问Internet的工具,也是客户端应用的宿主

[CORS:跨域资源共享] W3C的CORS Specification

随着Web开放的程度越来越高,通过浏览器跨域获取资源的需求已经变得非常普遍.在我看来,如果Web API不能针对浏览器提供跨域资源共享的能力,它甚至就不应该被称为Web API.从另一方面来看,浏览器作为进入Internet最大的入口,是各大IT公司的必争之地,所以浏览器市场出现了种类繁多.鱼龙混杂的局面.针对这两点,我们迫切需要一种能够被各个浏览器厂商共同遵循的标准来对跨域资源共享作出规范,这就是由W3C指定2的CORS(Cross-Origin Resource Sharing)规范. 目录

跨域资源共享 CORS 详解_javascript技巧

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制. 本文详细介绍CORS的内部机制. (图片说明:摄于阿联酋艾因(Al Ain)的绿洲公园) 一.简介 CORS需要浏览器和服务器同时支持.目前,所有浏览器都支持该功能,IE浏览器不能低于IE10. 整个CORS通信过程,都是浏览器自动完成,不需要用户参与.对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样.浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会

《Spring Boot官方指南》47.3 跨域资源共享支持

47.3 跨域资源共享支持 跨域资源共享 (CORS)是一个被绝大部分浏览器实现的W3C标准,CORS允许你灵活的指定跨域请求是否授权.执行器的MVC服务接口可以通过配置支持这种功能. 跨域资源共享默认是关闭的,只有当endpoints.cors.allowed-origins 属性被设置时才会被开启.下面的配置允许来自example.com域发送GET和POST请求 endpoints.cors.allowed-origins=http://example.com endpoints.cors