java ajax的跨域怎么解决,【Javaweb】Ajax跨域问题及其解决方案

目录

什么是Ajax

为什么Ajax不能跨域

如何解决Ajax跨域的问题?

CORS

CORS例子

Jsonp

什么是Ajax

在Ajax没有出现的时候,大部分的网络资源获取都要经过这种过程:

1、浏览器发送请求

2、服务器接受请求,返回资源

3、浏览器得到资源,进行界面刷新(这个刷新是强制的)

但是这样就会出现一个问题,就是我不能局部刷新网页内容,如果要进行内容刷新就必须刷新整个界面。这样就很鸡肋了,比如说我想要给一篇文章点赞,点赞后需要刷新文章的总点赞数量,总不能把整个网页都给我刷新一遍吧,这样体验就太差了。

为了解决这个问题,Ajax出现了,Ajax不是一个语言,也不是一门新技术,它是一系列技术的结合,Ajax的全称为Asynchronous JavaScript + XML。使用Ajax获取资源时,只是动态响应操作,发出对应的请求,得到返回结果或者资源,将其快速显示(或更新)到局部界面,这样就可以在得到资源的同时,不刷新整个界面。

为什么Ajax不能跨域

Ajax不能跨域,是因为浏览器都遵循了同源政策:不是“同协议、同域名、同端口” 的网页资源无法相互访问。Ajax就是采用了同源协议,所以Ajax无法访问非同源的资源。

但是from表单是可以跨域的,这是为什么呢?知乎上有个大佬说的很详细:

因为原页面用 form 提交到另一个域名之后,界面进行了刷新,原页面的脚本无法获取新页面中的内容,所以浏览器认为这是安全的。

而 AJAX 是可以读取响应内容的,因此浏览器不能允许你这样做。

如果你细心的话你会发现,其实请求已经发送出去了(Status Code: 200 OK ),你只是拿不到响应而已。所以浏览器这个策略的本质是,一个域名的 JS ,在未经允许的情况下,不得读取另一个域名的内容。但浏览器并不阻止你向另一个域名发送请求。

作者:方应杭

链接:https://www.zhihu.com/question/31592553/answer/190789780

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

如何解决Ajax跨域的问题?

目前普遍存在两种解决Ajax跨域问题的方法,一种是Jsonp(Json with padding),原理就是用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值