跨域,指的是浏览器不能执行其余网站的脚本。它是由浏览器的同源策略形成的,是浏览器施加的安全限制。php
使用ajax请求访问其余服务器的数据,此时,客户端会出现跨域问题.ajax
localhost和127.0.0.1虽然都指向本机,但也属于跨域。apache
如何实现跨域?(如下是经常使用,我本身项目使用到的)json
一、JSONP:api
全部,经过Chrome查看全部JSONP发送的Get请求都是js类型,而非XHR。跨域
要注意JSONP只支持GET请求,不支持POST请求。浏览器
二、apache设置反向代理(设置url映射解决跨域):安全
三、PHP端修改header(XHR2方式)服务器
在php接口脚本中加入如下两句便可:cors
header('Access-Control-Allow-Origin:*');//容许全部来源访问
header('Access-Control-Allow-Method:POST,GET');//容许访问的方式
4.cors
Cross-Origin Resource Sharing(CORS)跨域资源共享是一份浏览器技术的规范,提供了 Web 服务从不一样域传来沙盒脚本的方法,以避开浏览器的同源策略,确保安全的跨域数据传输。现代浏览器使用CORS在API容器如XMLHttpRequest来减小HTTP请求的风险来源。与 JSONP 不一样,CORS 除了 GET 要求方法之外也支持其余的 HTTP 要求。服务器通常须要增长以下响应头的一种或几种:
Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age: 86400
跨域请求默认不会携带Cookie信息,若是须要携带,请配置下述参数:
"Access-Control-Allow-Credentials": true // Ajax设置 "withCredentials": true