同源策略_()

本文详细介绍了多种跨域请求解决方案,包括CORS、JSONP、document.domain、webpack配置、nginx代理、iframe、postMessage等技术手段,适用于不同场景的跨域问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先解释  源 :协议、域名、端口号。
                只有三者都一样浏览器才能访问,否则就是跨域请求。

 

 

1、设置后台服务器允许跨域请求(CORS)

 CORS 需要浏览器和后端同时支持。IE 8 和 9 需要通过 XDomainRequest 来实现。


2、JSONP:原理利用script标签的src属性具有开放性原则。只有get请求

       封装了一个JSONP函数,重点是有一个callback = 函数名(回调函数)。

        /** 发送jsonp请求
   * 
   * @param url     <string>  接口的路径
   * @param cbName  <string>  回调函数名
   * @param [query] <object>  其他的一些参数
   */
  jsonp (url, cbName, query) {
    // 创建script标签
    url += `?cb=${cbName}`
    if (query) {
      for (var key in query) {
        url += `&${key}=${query[key]}`
      }
    }
    var script = document.createElement('script')
    script.src = url
    document.body.appendChild(script)
    // 一旦script存在,请求就发出去了,script就没用了,可以直接删掉
    document.body.removeChild(script) // 过河拆桥
  }
}

3、document.domain

   该方式只能用于二级域名相同的情况下,比如 a.test.com 和 b.test.com 适用于该方式。

    只需要给页面添加 document.domain = 'test.com' 表示二级域名都相同就可以实现跨域


4.webpack配置proxyTable设置开发环境跨域


5.nginx代理跨域


6.iframe跨域


7.postMessage
    这种方式通常用于获取嵌入页面中的第三方页面数据。一个页面发送消息,另一个页面判断来源并接收消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值