zoukankan      html  css  js  c++  java
  • 跨域

    什么是跨域

    域名的组成

    http:// www . test.com 80 / index.html
    协议 子域名   主域名   端口号   请求资源地址

    说明:当协议、子域名、主域名、和端口号有任意一个不同时,就算是不同域

    跨域:不同域之间相互请求资源,就是跨域

    跨域的解决方案

    Jsonp :需要目标服务器配合一个callback函数

          JSONP只支持GET请求

    CORS解决跨域 :跨域访问的请求头中存在Origin的字段,用来记录当前的访问域名,我们可以再服务端增加一个响应头Access-Control-Allow-Origin来告诉浏览器我们支持它获取就可以了

    //一个域名跨域访问
    <?php header('Access-Control-Allow-Origin:http://127.0.0.1'); $arr = ['code' => 200, 'name' => 'cui']; echo $data = json_encode($arr); ?>

    //多个域名跨域访问

    <?php
    $requestHeader = getallheaders();
    $origin = isset($requestHeader['Origin'])?$requestHeader['Origin']:'';
    switch ($origin) {
    case 'http://127.0.0.1':
    header('Access-Control-Allow-Origin:http://127.0.0.1');
    break;
    case 'http://localhost':
    header('Access-Control-Allow-Origin:http://localhost');
    break;
    default:
    break;
    }
    $arr = ['code' => 200, 'name' => 'cui'];
    echo $data = json_encode($arr);
    //注意,不支持下面这种写法
    //header('Access-Control-Allow-Origin:http://localhost,http://127.0.0.1');
    ?>

    //不推荐这样写,不安全

    <?php
    header('Access-Control-Allow-Origin:*');
    $arr = ['code' => 200, 'name' => 'cui'];
    echo $data = json_encode($arr);

    ?>

    杂念太多,必然根基浅薄
  • 相关阅读:
    web开发(六) EL表达式
    web开发(五) JSP详解(四大作用域九大内置对象等)
    web开发(四) 一次性验证码的代码实现
    Netty4
    Android Fragment
    Android 6.0 双向通话自动录音
    安卓
    SpringMVC + Spring + Mybatis+ Redis +shiro以及MyBatis学习
    Spring 3 AOP 概念及完整示例
    Java并发之CountDownLatch、CyclicBarrier和Semaphore
  • 原文地址:https://www.cnblogs.com/starshine-zhp/p/12841018.html
Copyright © 2011-2022 走看看