解决跨域问题

解决跨域问题

这个问题面试经常问,可是每次看完只会就不太记得,因此在这里记录一下,方便以后工(跳)作(槽)查看。


什么是跨域?
浏览器从一个域名的网页去请求另一个域名的资源时,域名,段口,协议任一不同,都是跨域。
域名
 主域名不同 http://www.baidu.com/index.html -->http://www.sina.com/test.js
 子域名不同 http://www.666.baidu.com/index.html -->http://www.555.baidu.com/test.js
 域名和域名ip http://www.baidu.com/index.html -->http://180.149.132.47/test.js
端口
http://www.baidu.com:8080/index.html–> http://www.baidu.com:8081/test.js
协议
http://www.baidu.com:8080/index.html–> https://www.baidu.com:8080/test.js
备注:
1.端口和协议的不同,只能通过后台来解决
2.localhost和127.0.0.1虽然都指向本机,但也属于跨域。
跨域限制
1.无法读取非同源网页的Cookie,LocalStorage和IndexedDB
2.无法接触非同源网页的DOM
3.无法向非同源地址发送AJAX请求(可以发送,但浏览器会拒绝接受响应)

如何使前端应用通过AJAX跨域访问后端应用呢?

这需要使用到CORS技术来实现,这也是目前最好的解决方案了。

CORS全称为Cross Origin Resource Sharing(跨域资源共享),服务器只需要添加相关响应头信息,即可实现客户端发出AJAX跨域请求。

CORS技术非常简单,易于实现,目前绝大多数浏览器均已支持该技术,服务端可通过任何编程语言来实现,只要能将CORS响应头写入response对象中即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值