zoukankan      html  css  js  c++  java
  • 关于跨域问题的解决办法

    跨域是指 在不同的域之间进行数据传输,只要协议、域名、端口有任何一个不同,都被当作是不同的域。
    解决跨域的方法:
    1.JSONP: 利用script的src 可以在不同域之间请求数据的特点,向某一地址发请求, 需要后台返回一个能够执行的js文件,


    如上图,这里利用jquery.ajax的jsonp 后台返回的是一个函数的调用,函数的声明是ajax中的success

    我们也可以自己写一个script 利用上面的方式


    后台返回的是一个 data的函数调用, 声明在前台页面中. 这些都需要后台的配合,因为返回的数据前面 需要加一下函数名,必须和后台约定好


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

    3.设置代理:在web服务器上封装第三方服务,然后给自己同源的web页面调用

    我用node搭建了一个代理服务器,在这里使用了http-proxy-middleware 这个中间件 非常好用。 只需要设置请求然后就直接可以使用,如图


    只需要在页面中发送请求,即可用代理服务器代理到请求的服务器,拿到数据。

    4. 还有一种postMessage ,一种HTML5新增方法,现在浏览器及IE8+支持,简单易用高大上。但是 我不是很喜欢用iframe。也不知道问什么,天生的排斥。 所以在这里推荐大神写的http://www.cnblogs.com/dolphinX/p/3464056.html 

    用IE6的以后吃方便面都没有调料包!!!
  • 相关阅读:
    项目管理软件选择:redmine or JIRA
    为已编译的DLL附带强命名
    NET简单的一个画图程序
    公共的Json操作类
    ASP.NET 程序优化
    提高ASP.NET页面载入速度的方法
    DataTable快速定制之Expression属性表达式
    TCP和UDP Client 代码
    Jquery实现异步上传图片
    C语言Socket编程(计算机网络作业)
  • 原文地址:https://www.cnblogs.com/H5C3XXN/p/6253433.html
Copyright © 2011-2022 走看看