面试篇
网络层:IP
跨域请求问题
标准的前端跨域报错:
Access to XMLHttpRequest at '…' from origin '…' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource
跨域问题是浏览器的同源策略,是为了安全而设置的,必须域名、端口、协议三者一致才是同源。
比如,如果我在www.baidu.com域名下的页面上运行js代码,通过ajax请求另一个页面的数据,这就属于跨域请求,是被浏览器禁止的。
浏览器通过安全考虑默认阻止跨域请求。比如我设置一个恶意网站,你打开的时候,我就访问你的支付宝,淘宝等页面获取你的信息,这是十分危险的。
后端可以指定HTTP响应头部,允许特定的跨域请求。常用如下:
- Access-Control-Allow-Origin: 指定允许访问资源的域。
- Access-Control-Allow-Methods: 指定允许的HTTP方法,例如GET, POST, PUT等。
- Access-Control-Allow-Headers: 指定允许的HTTP头部。
- Access-Control-Allow-Credentials: 是否允许发送Cookie和HTTP认证信息。