zoukankan      html  css  js  c++  java
  • 跨域

    1:跨域

    http://localhost:801/Ajax/JQuery.html

    http://localhost:801/Ajax/JSONsever.php    

    /上面的网址,协议HTTP协议,端口号801,域名一直不会产生跨域/

    当协议端口号域名都不同的就会产生跨域

    HTTP协议默认为80端口,HTTPS端口443 协议产生跨域   

    例如更改POST方法的地址

    http://127.0.0.1:801/Ajax/JSONsever.php //原来地址:http://localhost:801/Ajax/JSONsever.php

    127.0.0.1  localhost: 不是一个域名虽然实际上是一样的

    域名不同就会产生跨域

    2:跨域解决方法

    二:使用jsonp来实现跨域请求 jsonp不支持POST请求跨域

    $result = ' {

            "success": "false",

            "msg": "没有该员工"

    }'//json字符串的数值

    $result = $jsonp.'({

            "success": "false",

            "msg": "没有该员工"

    })'; //jsonp.’()’//jsonp的格式 .用来连接字符串

    $.ajax({

        url: 'http://www.domain2.com:8080/login',

        type: 'get',

        dataType: 'jsonp',  // 请求方式为jsonp

        jsonpCallback: "onBack",    // 自定义回调函数名

        data: {}

    });

    2:HTML 5

     

    http://www.cnblogs.com/chopper/archive/2012/03/24/2403945.html

    header("Access-Control-Allow-Origin:*");

    header("Access-Control-Allow-Method:POST,GET");

    直接在服务端加上这两行代码。客户端不需要进行改变

    客户端:

    $.ajax({

                               type: "GET" ,

                               url:"http://127.0.0.1:801/Ajax/JSONsever.php?number=" + $('#keyword').val(),

                               dataType :"json", //格式为json但可以实现跨域

                              // jsonp : "callback",

                               success : function(data){

                                        if(data.success)

                                        {

                                                $('#search_result').html(data.msg)

                                                }

                                       else{

                                                $('#search_result').html("error" + data.msg);

                                               }      

                                        },

                              error : function(jqXHR){

                                       console.log("发生错误"+ jqXHR.status)//404错误代码

                                       }

                               })

                      

                       });//GET

    五、 postMessage跨域

    postMessage是HTML5 XMLHttpRequest Level 2中的API,且是为数不多可以跨域操作的window属性之一,它可用于解决以下方面的问题:

    a.) 页面和其打开的新窗口的数据传递

    b.) 多窗口之间消息传递

    c.) 页面与嵌套的iframe消息传递

    d.) 上面三个场景的跨域数据传递

    用法:postMessage(data,origin)方法接受两个参数

    data: html5规范支持任意基本类型或可复制的对象,但部分浏览器只支持字符串,所以传参时最好用JSON.stringify()序列化。

    origin: 协议+主机+端口号,也可以设置为"*",表示可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。

  • 相关阅读:
    AndroidStudio打开新项目后解决下载某版本gradle慢的问题
    GeoServer怎样修改线性地图的颜色样式
    GeoServer简介、下载、配置启动、发布shapefile全流程(图文实践)
    AndroidStudio中打开新项目提示:This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot o
    若依微服务版在Windows上通过jar包运行业务模块时提示:Failed to determine s suitable driver class
    若依微服务版后台服务通过jar包部署到Windows服务器
    腾讯云centos7安装MySQL
    使用Navicat for MySQL把本地数据库上传到服务器
    浏览器页面乱码
    事务的配置
  • 原文地址:https://www.cnblogs.com/love-life-insist/p/9063840.html
Copyright © 2011-2022 走看看