• JS中实现跨域的方法总结


    今天早上在地铁看了点基础知识的考察题,看到了一个JS跨域的问题,仔细想了想自己脑子里竟然只剩下jsonp跨域和用nginx反向代理进行跨域,想着还有别的几种方法,就是想不起来,这个人呢,一上岁数这个脑子就不好使,为了防止下次又遗忘了,所以特意写一篇随笔来记录一下JS中实现跨域的方式

    1.jsonp请求

    2.document.domain

    3.window.name

    4.window.postMessage

    5.CORS

    6.Web Sockets

    7.使用服务器进行反向代理

    jsonp请求

      jsonp的原理时利用script标签的跨域特性,可以不受限制的从其他域中加载资源,类似的标签还有<img>,具体的使用方法在我前面的博文中已经写过,

      注意:jsonp只支持GET请求而不支持其他类型的请求

    doucment.domain

      这种方式主要用在主域名相同,子域名不同的情况下

    window.name

      window的name属性有个特征:在一个窗口(window)的生命周期内,窗口所载入的所有页面都是共享一个window.name,每个页面对window.name都有读写权限,window.name是持久存在一个窗口载入过的所有页面中的,并不会因新页面的载入而进行重置

    window.postMessage

      window.postMessage是html5中实现跨域访问的一种新方式,可以使用它来向其他的window对象发送消息,无论这个window对象是属于同源还是不同源

    CORS

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

      这个需要服务器设置header :Access-Control-Allow-Origin即可

    webSocket

      webSocket的原理:在JSchuangjianlewebSocket之后,会有一个HTTP请求发送到浏览器以发起链接,取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为websocket协议

    使用服务器进行反向代理

      我个人常用的nginx进行反向代理,之前也试过用nodeJS自己搭建一个服务器进行反向代理,具体的步骤暂时不详述,各位可以搜一下,一搜一大堆

    好了,暂时的话就这些,但是我在工作中常用的还是最后一种用nginx服务器进行反向代理

  • 相关阅读:
    在java中获取URL的域名或IP与端口
    解决notepad++64位没有plugin manager的问题
    统一认证需要解决的问题
    搭建Maven私服
    Update openssh7.9 on centos6
    python下载想听的有声书,让喜马拉雅收费,我是程序员!
    golang ---获取内存信息
    websocket学习
    go 读取BMP文件头二进制读取
    go 计算文件行
  • 原文地址:https://www.cnblogs.com/suihang/p/10487498.html
Copyright © 2020-2023  润新知