百度百科:AJAX 跨域访问是用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面
由于安全方面的原因, 客户端js使用xmlhttprequest只能用来向来源网站发送请求,比如在www.readlog.cn下去请求test.readlog.cn的数据,都是不行的。
怎样算是跨域呢?
URL | 说明 | 是否允许通信 |
---|---|---|
http://www.a.com/a.js,http://www.a.com/b.js | 同一域名下 | 允许 |
http://www.a.com/lab/a.js,http://www.a.com/script/b.js | 同一域名,不同文件夹 | 允许 |
http://www.a.com:8000/a.js,http://www.a.com/b.js | 同一域名,不同端口 | 不允许 |
http://www.a.com/a.js,https://www.a.com/b.js | 同一域名,不同协议 | 不允许 |
http://www.a.com/a.js,http://70.32.92.74/b.js | 域名和域名对应ip | 不允许 |
http://www.a.com/a.js,http://script.a.com/b.js | 主域相同,子域不同 | 不允许 |
http://www.a.com/a.js,http://a.com/b.js | 同一域名,不同二级域名(同上) | 不允许(cookie这种情况下也不允许访问) |
http://www.cnblogs.com/a.js,http://www.a.com/b.js | 不同域名 | 不允许 |
如何解决跨域问题?
GET请求
dataType : "jsonp",//jsonp跨域请求
注意:当 dataType : “jsonp"时,type只能为"GET”。
POST请求
至于POST请求的话,就比较麻烦了,需要到后台进行配置
public void xxx(HttpServletRequest request,HttpServletResponse response) throws Exception{
// 指定允许其他域名访问
response.addHeader("Access-Control-Allow-Origin","*");
// 响应类型
response.addHeader("Access-Control-Allow-Methods","POST");
// 响应头设置
response.addHeader("Access-Control-Allow-Headers","x-requested-with,content-type");
//响应内容支持中文
response.setContentType("text/html;charset=utf-8");
}