迅速理解前端跨域问题

啥是跨域

  • 网站的协议名 protocol
  • 域名 host
  • 端口号 port
    以上三者中只要有一个不同,就属于跨域请求
    如果都相同,则称“同源”

跨域请求的限制

由于浏览器同源策略

  • cookie、LocalStorage 和 IndexDB 无法读取;
  • DOM 无法获得
  • AJAX请求不能发送

跨域怎么解决

JSONP(JSON with Padding)方法:

HTML 的 script 标签是不受同源策略的限制的,可以通过 script 标签加载并执行其他的域的 js 文件的。把js、css,img等静态资源分离到另一台独立域名的服务器上,在html页面中再通过相应的标签从不同域名下加载静态资源,从而被浏览器允许。
缺点:只支持GET请求。
优点:兼容性好,啥古老浏览器都兼容
代码:https://www.runoob.com/json/json-jsonp.html

CORS 方法:

使用自定义的 HTTP 头部,让服务器能声明哪些来源可以通过浏览器访问该服务器上的资源,从而决定请求或响应是应该成功还是失败
缺点:不是绝对安全
优点:先进,支持所有类型的HTTP请求,错误处理

还有window.name、document.domain 、postMessage、nginx代理跨域、nodejs中间件代理跨域等

推荐:https://www.jianshu.com/p/ad799a7801e1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值