跨域解释:
Domain:
http:// www . abc.com: 8080 / scripts/AjaxPlugin.js
协议 子域名 主域名 端口号 请求资源地址
~当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同于。
~不同域之间互相请求资源,就算作“跨域”。
浏览器会阻止ajax请求非同源的内容
所有的浏览器都遵守同源策略,这个策略能够保证一个源的动态脚本不能读取或操作其他源的http响应和cookie,这就使浏览器隔离了来自不同源的内容,防止它们互相操作。
怎么解决跨域问题
第三方网站开启HTTP的Access-Control-Allow-Origin参数
只有当目标页面的response中,包含了 Access-Control-Allow-Origin 这个header,并且它的值里有我们自己的域名时,浏览器才允许我们拿到它页面的数据进行下一步处理。如:
Access-Control-Allow-Origin: http://run.jsbin.io
如果它的值设为 * ,则表示谁都可以用:
Access-Control-Allow-Origin: *

⚠️实际请求中B Server实际是返回了数据的只是浏览器不让使用而已~


JSONP
JSONP(JSON with Padding) 是一种跨域请求方式
主要原理是利用了script 标签可以跨域请求的特点,由其 src 属性发送请求到服务器,服务器返回 JS 代码,网页端接受响应,然后就直接执行了,这和通过 script 标签引用外部文件的原理是一样的。
Reference:
https://www.teakki.com/p/57dfb23cd3a7507f975e7738
https://code-ken.github.io/2016/07/13/jsonp-json-ajax/
网友评论