当前位置:网站首页 > 云计算与后端部署 > 正文

跨域解决方案(前后端跨域解决方案)



特别注意两点:
第一,如果是协议和端口造成的跨域问题“前台”是无能为力的,
第二:在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip 地址对应着两个域或两个域是否在同一个ip上。
“URL的首部”指window.location.protocol +window.location.host,也可以理解为“Domains, protocols and ports must match”。

1) 在www.a.com/a.html中:

2) 在www.script.a.com/b.html中:

这个没什么好说的,因为script标签不受同源策略的限制。

原理是利用location.hash来进行传值。

假设域名a.com下的文件cs1.html要和cnblogs.com域名下的cs2.html传递信息。
1) cs1.html首先创建自动创建一个隐藏的iframe,iframe的src指向cnblogs.com域名下的cs2.html页面
2) cs2.html响应请求后再将通过修改cs1.html的hash值来传递数据
3) 同时在cs1.html上加一个定时器,隔一段时间来判断location.hash的值有没有变化,一旦有变化则获取获取hash值

cnblogs.com域名下的cs2.html:

a.com下的域名cs3.html

window.name 的美妙之处:name 值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2MB)。

1) 创建a.com/cs1.html

2) 创建a.com/proxy.html,并加入如下代码

3 在b.com/cs1.html中包含:

1) a.com/index.html中的代码:

2) b.com/index.html中的代码:

CORS背后的思想,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功,还是应该失败

IE中对CORS的实现是xdr

其它浏览器中的实现就在xhr中

实现跨浏览器的CORS

JSONP包含两部分:回调函数和数据。

回调函数是当响应到来时要放在当前页面被调用的函数。

数据就是传入回调函数中的json数据,也就是回调函数的参数了。

jsonp虽然很简单,但是有如下缺点:

1)安全问题(请求代码中可能存在安全隐患)

2)要确定jsonp请求是否失败并不容易

web sockets是一种浏览器的API,它的目标是在一个单独的持久连接上提供全双工、双向通信。(同源策略对web sockets不适用)

web sockets原理:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为web sockt协议。

只有在支持web socket协议的服务器上才能正常工作

到此这篇跨域 解决方案(前后端跨域解决方案)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • docker发布时间(docker一般部署什么)2025-02-14 19:36:05
  • 鸿蒙系统软件后缀(鸿蒙系统应用后缀)2025-02-14 19:36:05
  • 苹果电脑装了双系统之后怎么切换(苹果电脑装了双系统之后怎么切换输入法)2025-02-14 19:36:05
  • 虚拟usb软件(虚拟usb端口软件)2025-02-14 19:36:05
  • 手机软件后缀怎么改(手机软件的后缀)2025-02-14 19:36:05
  • 电脑软件安装程序后缀(电脑软件安装程序后缀是什么)2025-02-14 19:36:05
  • redis 6380端口(redis-cli 端口)2025-02-14 19:36:05
  • 连接redis(连接redis客户端命令)2025-02-14 19:36:05
  • redis查看端口(查看redis的key)2025-02-14 19:36:05
  • oracle默认端口号是多少(oracle默认开放端口)2025-02-14 19:36:05
  • 全屏图片