• 跨域


    转载

    1.为什么会出现跨域

    浏览器有同源策略,非同源下的请求,都会产生跨域问题

    同源策略:同一协议,同一域名,同一端口号

    2.跨域的解决办法有?

    (1)设置document.domain解决无法读取非同源网页的cookie问题

    // 两个页面都设置
    document.domain = 'test.com';
    

    (2)跨文档通信 API:window.postMessage()

    //原网页
    // 父窗口打开一个子窗口
    var openWindow = window.open('http://test2.com', 'title');
    // 父窗口向子窗口发消息(第一个参数代表发送的内容,第二个参数代表接收消息窗口的url)
    openWindow.postMessage('Nice to meet you!', 'http://test2.com');
    
        // 监听 message 消息
        window.addEventListener('message', function (e) {
          console.log(e.source); // e.source 发送消息的窗口
          console.log(e.origin); // e.origin 消息发向的网址
          console.log(e.data);   // e.data   发送的消息
        },false);
    
    

    (3)JSONP

    JSONP的优点是:它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行,不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后可以通过调用callback的方式回传结果。
    JSONP的缺点则是:它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JavaScript调用的问题。

    (4)CORS 后台人员解决

    (5)用代理的方式来解决跨域问题

  • 相关阅读:
    WingIIDE的licese破解方法
    HttpCookie
    Jquery中html()方法 and "click"绑定后代元素
    jquery 选择器多个
    input标签的type为select、radio、checkbox的使用
    c#中?和??使用
    VS中使用附加进程来调试项目
    刷新局部页面
    ant design vue 文件上传的集中页面
    vue 上传超大文件出现Uncaught (in promise) Error: Network Error at createError
  • 原文地址:https://www.cnblogs.com/kawayi/p/14426032.html
Copyright © 2020-2023  润新知