跨域的几种方式

一:跨域资源共享CORS

    CORS是w3c标准,它允许浏览器向其他服务器发起xmlhttprequest请求。

    CORS需要浏览器和服务器共同支持,毕竟xmlhttprequest是浏览器提供的api,浏览器不支持发不了请求。

    1.对于一个简单的CORS请求,浏览器会直接在请求头里面添加一个Origin:http://localhost:63342,请求的协议,域名,端口,这个步骤是浏览器自动完成的。

    2.外部服务器那边会检查,当前请求origin是否可以访问服务器


Access-Control-Allow-Origin设置了*表示可以是任何域名,当前注视掉了,所以浏览器会抛出一个错误


服务器拒接了这一次请求。

另外cors默认是不发送cookie


里面没有cookie这个选项

如果需要发生cookie,需要另外设置

1,在服务端添加Access-Control-Allow-Credentials:true

2,在xmlhttprequest请求端时候设置xhr.withCredentials:true

这样浏览器发送请求端时候会带上cookie


二JSONP的请求

    jsonp是利用了script标签来请求其他服务器的数据。

    这个也是需要前后端配合

    前端这边我手写了一个


对应返回后的数据


第一张图是请求的是标签script,第二张图是标签里面带来的数据,就是callback参数后面的回调函数包裹着需要的数据。

合起来,其实实际上就是html页面引入了一个script,只不过这个script有些特殊,里面是一个函数调用的方法。

你可能感兴趣的:(跨域的几种方式)