zoukankan      html  css  js  c++  java
  • http请求的跨域

    跨域是指 不同域名之间相互访问
    URL指向的地址中,二级域名、端口、协议必须与主页面完全相同,否则就算跨域

    跨域的问题有以下几个要点

    • 在web页面上 , 凡是拥有src属性的标签引用其他域当中的资源文件均不受影响 , 比如 iframe , img , script
    • 表单的提交不存在跨域的影响
    • Ajax请求存在跨域请求无权访问的问题

    基于上述的要点 , 解决Ajax跨域访问就只有一种可能 , 那就是在远端服务器上设法把数据包装成一段符合JS格式的文本
    在前端创建一个<script>标签 , 去获取服务端的这段JS文本
    恰巧JSON这种纯文本的数据格式可以简洁地描述各种复杂的数据 , 而且被JS原生支持 , 在客户端进行处理十分方便 

    于是这样就有了名为jsonp的解决方案
    web客户端通过与调用脚本一模一样的方式 , 来调用跨域服务器上的生成的符合JS格式的文本
    它逐渐成为了一种非正式的传输协议 , 该协议允许用户传递一个jsonCallback作为请求的参数 , 服务器端使用这个回调函数的名称来包裹需要回传的数据

    所以json和jsonp根本就不是一回事 , 前者是一种数据交换格式 , 后者则是一种跨域数据交互协议

    jQuery就提供了这种传输方式的具体实现
    用法就是在$.ajax的参数 dataType置为jsonp
    可以使用jsonpCallback设定回调函数
    也可以使用success对应的函数 , jquery会自动提取出其中的数据

    虽然这种方式归入了ajax当中 , 但本质是一种与ajax完全不同的方式
    ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加<script>标签来调用服务器提供的js脚本

    当然 , 作为数据传输的载体 , 并不是必须要用json
    就算是用个普通的字符串照样没问题 , 但是这样不利于提供公开服务


    最后需要说明的就是
    限制跨域是浏览器的行为,而不是JS的行为,你也可以自己开发一个浏览器,或者拿开源代码改,使得自己开发的浏览器能够跨域 

  • 相关阅读:
    Linux的基本优化
    Linux登录自动切换root账户与历史命令优化
    前端借助dom-to-image把HTML转成图片并通过ajax上传到服务器
    HTTP基础知识(十一)
    HTTP基础知识(十)
    HTTP基础知识(九)
    HTTP基础知识(八)
    HTTP基础知识(七)
    HTTP基础知识(六)
    HTTP基础知识(五)
  • 原文地址:https://www.cnblogs.com/programInit/p/6363197.html
Copyright © 2011-2022 走看看