跨域
浏览器为了用户的信息安全,网页中有一个网络请求技术:AJAX 在网络请求时
请求的网址 和 当前页面的网址 不是同一台服务器 就会被拒绝接受服务器发送的数据
同源策略
浏览器的一种安全策略: 指 两个网址的 协议、 ip 、port 三者一样代表同源
AJAX(非同源)
1、同源==>pathname不参与同源判断
https://www.yj.com/index.html https://www.yj.com/home/goods
2、同源 ==> 域名(ip:port)一样
http://www.yj.com/index.html (假设DNS解析为 192.168.31.224:7001)
http://192.168.31.224:7001/ajax
3、异源 ==> 协议不一样
http://www.yj.com/index.html https://www.yj.com/ajax
4、异源 ==> 域名(ip:port)不一样
http://www.yj.com/index.html http://www.yj.cn/ajax
解决方案
在数据包的头部配置Access-Control-Allow-Origin字段以后,数据包发送给浏览器后
浏览器就会根据这里配置的白名单 "放行" 允许白名单的服务器对应的网页来用ajax跨域访问
ps:跨域请求时前端是请求了跨域的后端,只是返回的数据被浏览器拒收了,并不是跨域了就不发网络请求
*号处放置需要通过的白名单IP地址,*默认为全部通过
res.setHeader("Access-Control-Allow-Origin","http://192.168.31.224:8080")
res.setHeader("Access-Control-Allow-Origin","*")
一般用于测试,*表示所有的服务器都可以访问并使用该数据
如果设置了数据接口(status),那么writeHead一定要卸载setHeader后边,不然要出错
例如