web是如何实现跨域的

跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域 浏览器有同源策略本身是禁止跨域访问的 为什么浏览器要限制跨域访问呢?原因就是安全问题:如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现cookie泄露的安全问题 为什么要跨域: 既然有安全问题,那为什么又要跨域呢? 有时公司内部有多个不同的子域,比如一个是location.company.com ,而应用是放在app.company.com , 这时想从 app.company.com去访问 location.company.com 的资源就属于跨域

怎么实现跨域: 由于浏览器一般不对script,img等进行跨域限制,所以我们有机会通过script的方式来实现跨域访问。 简单来说,就是你请求的文件,只要含有“src”,“href”这些属性,你就能在其他服务器上,请求你所需要的文件,然后在自己的服务器上运行,就实现了跨域(跨协议,跨域名,跨端口)。 凡是拥有scr这个属性的标签都可以跨域例如<script><img><iframe>,herf属性的有<a> 具体做法: 1. 基于script标签实现跨域,在头部写请求的资源地址: <script type="text/javascript" src="http://web.cn/js/message.js"></script> 返回的是json数据 2. 基于jQuery发送Ajax,在Ajax里面设置datatype为jsonp(服务器返回的数据格式),则可以进行跨域访问,不过Ajax中type必须是get,因为jsonp只支持get 3.还有ifram请求 基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com 这种特点,例如:http://a.study.cn/a.html 请求 http://b.study.cn/b.html 也就是两个页面必须属于一个基础域(例如都是xxx.com),使用同一协议和同一端口,这样在两个页面中同时添加document.domain,就可以实现父页面调用子页面的函数

4.利用 CORS (Cross-Origin Resource Sharing)跨域资源共享实现跨域, CORS 支持所有类型的 HTTP 请求;使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理;绝大多数现代浏览器都已经支持了CORS;

CORS:https://blog.csdn.net/Odyssues_lee/article/details/80836839

实现跨域的话服务端需要做什么: 服务端要检查访问的请求参数,如果没有callback,则可以按照之前的流程走;如果带着callback参数,则需要将返回的结果包装在callback里面。

1、jsonp跨域 JSONP(JSON with Padding:填充式JSON),应用JSON的一种新方法, JSON、JSONP的区别:  1、JSON返回的是一串数据、JSONP返回的是脚本代码(包含一个函数调用)  2、JSONP 只支持get请求、不支持post请求  (类似往页面添加一个script标签,通过src属性去触发对指定地址的请求,故只能是Get请求)

参考链接: https://blog.csdn.net/echizao1839/article/details/80815155 https://blog.csdn.net/tjcjava/article/details/76468225 https://blog.csdn.net/qq_15037231/article/details/80364647

https://www.jianshu.com/p/79daa0d45aac

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券