了解这个问题前,需要先了解以下浏览器的同源策略,必须协议,域名,端口号三者完全一致的才叫同源(如下表),非同源数据不能直接互相访问。
http://localhost:8080 | http://localhost | 非同源(端口号不一样) |
http://localhost:8080 | https://localhost:8080 | 非同源(协议不一样) |
http://localhost:8080 | http://127.0.0.1:8080 | 非同源(域名不一样) |
解决跨域的方法:
1、cors: 跨域资源共享,出现跨域的问题是浏览器的同源策略,跨域发送请求时可以通过定义http头信息,使得服务器响应跨域请求,直接在后端程序设置响应块。
header('Access-Control-Allow-Origin:*');
2、jsonp:利用HTML里src属性的开放性原则,但是只能处理get类型的跨域,post不可以。