跨域是浏览器的限制,跟服务器什么关系
Posted yingmhd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨域是浏览器的限制,跟服务器什么关系相关的知识,希望对你有一定的参考价值。
首先,跨域是因为浏览器的“同源策略”问题,跟服务器没有关系。
因为“同源策略”,不同源之间的站点:
- 无法访问对方存储在浏览器中的数据,比如
localStorage
,IndexedDB
,Cookie
- DOM无法获得
- AJAX请求不能发送
不同源站点的通信可以通过以下方法:
- 通过设置相同的
document.domain
可以共享cookie
,也可以用于父子窗口获取彼此Dom
- 通过
window.onhashchange
共享hash值,仅限于父子窗口(内嵌iframe) - 通过
postmessage
至于AJAX请求,浏览器先会检查请求路径与当前页面是否同源,同源直接发送,不同源就要先hold住,在请求的header
里面加个Origin
属性,发一个【预检请求】,服务器收到该请求后,根据自身的配置返回结果
Access-Control-Allow-Origin
: 允许跨域的域名列表Access-Control-Allow-Methods
: 允许跨越的请求方式Access-Control-Allow-Headers
: 允许跨域的Header
列表Access-Control-Expose-Headers
:允许暴露给javascript
代码的Header
列表Access-Control-Max-Age
:最大的浏览器缓存时间,单位为s
浏览器根据返回数据判断,符合条件则发送正式请求,不符合就拒绝发送请求。
这也就是CORS
,不过CORS
在【简单请求】时,不会发送预检请求
以上是关于跨域是浏览器的限制,跟服务器什么关系的主要内容,如果未能解决你的问题,请参考以下文章