No 'Access-Control-Allow-Origin' header is present on the requested resource.' Ajax跨域访问解决方案
什么是跨域?
跨域是指一个域下的文档或脚本试图去请求另一个域下的资源
例如:
1.资源跳转: A链接、重定向、表单提交
2.资源嵌入,如:link,script等
3.脚本请求: js发起的ajax请求、dom和js对象的跨域操作等
跨域访问违反了同源策略(浏览器最核心也是最基本的安全功能),浏览器的ajax只能访问跟它的HTML页面同源(相同域名或IP)的资源。
解决方案:
1.服务器端方案
很显然,这种方式对非网站拥有人员来说是不能做到的,而且此种方式很容易受到CSRF攻击(跨站请求伪造)
2.客户端方案
通过jsonp跨域,jsonp是专门用来解决跨域访问而诞生的,缺点是:只能实现get一种请求。
例子:
$.ajax({
url: 'http://www.xxx.com/index.php?callback=showJson',
type: 'get',
dataType: 'jsonp', // 请求方式为jsonp
data: {}
});
使用jsonp后,后端还需要做相应的修改,
echo $_GET['callback'].'('.json_encode($res).')';