zoukankan      html  css  js  c++  java
  • 记几种解决跨域问题的办法

    想当年也是被跨域搞大了头~~~

    服务端代码为php,其它的语言应该也有类似的吧,或者差不多的意思。

    情况一:

    设置Access-Control-Allow-Origin ,这玩意儿意思就是你允许谁请求你的东西;下面这个设置为“所有的”,请求的方法为“get,post”。

    (注意安全,一般可能作为测试用)

    /*星号表示所有的域都可以接受,*/
    header("Access-Control-Allow-Origin:*");
    
    header("Access-Control-Allow-Methods:GET,POST");
    
    echo "这是我随便写的数据";

    情况二:

    jsonp,其实看了那些相关文章之后,发现jsonp这个东西其实跟使用script标签,和$.getScript方法是一个道理。那么我就分小点列一下。

    PHP:这个代码都一样不用改

    $callback = isset($_GET['jsoncallback']) ? trim($_GET['jsoncallback']) : ''; //jsonp回调参数,必需
    $date = array(
        "msg"=>"这是我随便写的数据"
        );
    $tmp= json_encode($date); //json 数据
    
    echo $callback . "(".$tmp.")"; 

    ①jsonp

    JS:

    $.ajax({
        url:"*******/ajax.php",
        type:"post",
        dataType:"jsonp",
        jsonp: 'jsoncallback',
        success:function(data){
            console.log(data);
        }
    });

    ②getScript

    JS

    function jsoncallback(data){
        console.log(data);
    }
    $.getScript("*******/ajax.php?jsoncallback=jsoncallback");

    ③script标签,同上,只是改为动态写个标签附上这个路径到src上。

    这种情况的实现方法呢是通过get方式(也只能用这个方式)请求的同时附带callback方法(以上为jsoncallback),那么后台拿到这个参数之后直接返回只是返回的时候是这个东西

    jsoncallback(data);

    what!!!这不是一个JS的方法调用吗?噢噢噢噢这样,所以我之前定义的那个方法就可以拿到这个data参数了。然后进行数据处理吧~~~

  • 相关阅读:
    BZOJ 2743: [HEOI2012]采花( 离线 + BIT )
    BZOJ 1031: [JSOI2007]字符加密Cipher( 后缀数组 )
    BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
    HDU 2602 Find a way BFS搜索
    HDU 1495 非常可乐 BFS搜索
    UVA 11624 Fire! BFS搜索
    FZU2150 Fire Game BFS搜索
    POJ3414 Pots BFS搜素
    POJ3087 Shuffle'm Up 简单模拟
    POJ 3126 Prime Path BFS搜索
  • 原文地址:https://www.cnblogs.com/AlexBlogs/p/5796201.html
Copyright © 2011-2022 走看看