前台调用后台的接口,若是不是同一个域,就会产生跨域问题前端
浏览器出于安全考虑,发现请求是跨域的时候,会作一些校验,校验不经过,就会有跨域问题
发出的请求,不是本域的,协议,域名,端口,任何一个不同,浏览器都会认为是跨域
若是发出的不是XHR请求,即便不是本域的,浏览器不会认为是跨域
命令行参数启动:经过命令行参数启动浏览器(--disable-web-security), 浏览器不会检查
MacOS命令行:
open -n /Applications/Google Chrome.app/ --args --disable-web-security —user-data-dir=/Users/你电脑的名字/MyChromeDevUserData/web
jsonp是用动态建立的script标签对进行请求 /get?callback=123
发出的请求不是xhr类型,type是script类型,浏览器不作校验 callback的内容,就是函数名,返回的数据,是做为函数的参数
-服务器须要改动代码 -只支持get方法 -发送的不是xhr请求
跨域资源共享CORS:在响应头增长指定的字段,容许对方调用json
Access-Control-Allow-Origin "*" 容许全部域跨域调用 "http://www.sanjieke.cn" 容许这个域跨域调用 Access-Control-Allow-Method "*" 容许全部的方法 "GET" 指定容许的方法 带cookie的跨域,origin必须是全匹配,不能是*号,须要增长Access-Control-Allow-Credentials为true,前端也须要设置xhr.withCredentials = true 带上cookie 带自定义头的跨域,增长Access-Control-Allow-Headers,值为自定义头
更详细的解读 https://segmentfault.com/a/11...segmentfault