XMLHttpRequest
XMLHttpRequest的跨域,是需要对方网站支持的,对方网站有相应的允许跨域的响应标头才可以。
JSONP的跨域实际上不是用XHR实现的,而是一个script标签,script是可以跨域的,回调函数作为get参数传入请求里。
总之,不论是XHR的跨域,还是JSONP,都是需要对方网站提供支持,在对望愿意分享给你数据的情况下你才能得到。
在对方没有提供支持的情况下,你是取不到它的数据的
Fetch API
与XHR2一样,fetch也是支持跨域请求的,只不过其跨域请求做法与XHR2一样,需要客户端与服务端支持;另外,fetch还支持一种跨域,不需要服务器支持的形式,具体可以通过其mode的配置项来说明。
fetch的mode配置项有3个值,如下:
-
same-origin
:该模式是不允许跨域的,它需要遵守同源策略,否则浏览器会返回一个error告知不能跨域;其对应的response type为basic。 -
cors:
该模式支持跨域请求,顾名思义它是以CORS的形式跨域;当然该模式也可以同域请求不需要后端额外的CORS支持;其对应的response type为cors。 -
no-cors
: 该模式用于跨域请求但是服务器不带CORS响应头,也就是服务端不支持CORS;这也是fetch的特殊跨域请求方式;其对应的re