跨域产生的原因:
- 浏览器限制 。如果浏览器发现请求是跨域的时候,就会做校验,如果校验不通过就会报跨域的错误
- 跨域 。发出去的请求只要域名、端口、协议中的任意一个与当前域不同的时候,都会发生跨域
- 发送的XHR(XMLHTTPRequest)请求 。如果发送的不是xhr请求,无论是否跨域,浏览器都不会报错
解决跨域的方法
- 浏览器角度 。让浏览器不做校验,浏览器的设置跨域,在浏览器的属性设置页面的目标输入框加上--disable-web-security 。这样浏览器将不会去做校验了 。但是每个人都需要去改动,不建议使用 。
- 发送xhr请求角度 。让跨域的请求不发送xhr请求,就不会再报错了 。办法是使用jsonp:jsonp是非官方协议,是前后端的一种约定,前端使用ajax发送请求,dataType为jsonp,并且带一个参数(默认是callback),当后台发现这个参数之后,就知道这是一个jsonp请求,就会把原本返回json对象编程js返回,js代码是一个函数的执行,函数名是callback的参数值,函数的参数是原本的json对象 。缺点:1).只支持get方法请求;2).需要服务器修改代码;3).发送的不是xhr请求
- 在跨域角度 。1).被调用方解决:在响应头增加指定字段,告诉浏览器,允许调用,这种方法的原理是从根源支持跨域的 。各种解决方式,请参考详细解决笔记;2).调用方解决:这种解决办法原理是隐藏跨域 。使用代理,在同一个域请求不同的url地址,转发到不同的域 。
【ajax跨域完全讲解】
推荐阅读
- 完全自动化的 L5 级别自动驾驶即将到来,汽车黑匣子技术拍了拍你
- 自己用桶提水洗车可以不?完全可以,但是有三个注意事项
- 腾讯|腾讯顶级IP大作!《宝可梦大集结》下载已破7000万 完全免费
- JavaScript、Ajax、jQuery全部知识点,1分钟速懂!
- 跨域问题是怎样造成的?
- 跨域保存cookie问题解决
- 浏览历史怎么完全清除?
- PHP使用反向Ajax技术实现在线客服系统
- 火星|火星上的日落是什么样子?与地球完全不一样 原理揭晓
- 解决跨域的四种方式