ajax解决跨域问题(POST、GET)以及如何判断跨域?

百度百科: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");
}
发布了68 篇原创文章 · 获赞 128 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_39380155/article/details/105627606
今日推荐