• PHP 服务器端处理跨域问题


    1、允许所有域名访问

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

    2、允许单个域名访问

    header('Access-Control-Allow-Origin: https://test.com');
    

    3、允许多个域名访问

    在实际项目中最好指定能跨域访问的域名,增加安全性。可以写在一个公共类里面,封装一个方法调用。
    
    
    // 设置能访问的域名
    static public $originarr = [
       'https://test1.com',
       'https://test2.com',
    ];
     
    /**
     *  公共方法调用
     */
    static public function setheader()
    {
       // 获取当前跨域域名
       $origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
       if (in_array($origin, self::$originarr)) {
          // 允许 $originarr 数组内的 域名跨域访问
          header('Access-Control-Allow-Origin:' . $origin);
          // 响应类型
          header('Access-Control-Allow-Methods:POST,GET');
          // 带 cookie 的跨域访问
          header('Access-Control-Allow-Credentials: true');
          // 响应头设置
          header('Access-Control-Allow-Headers:x-requested-with,Content-Type,X-CSRF-Token');
       }
    }
    
    

    起初只在文件开头设置了

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

    然后报错

    Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers in preflight response.
    

    解决方法:

    文件开头设置

        header('Access-Control-Allow-Origin:*');
        header('Access-Control-Allow-Methods:OPTIONS, GET, POST'); // 允许option,get,post请求
        header('Access-Control-Allow-Headers:x-requested-with'); // 允许x-requested-with请求头
    

    后成功

    其中比较疑惑的是 Access-Control-Allow-Headers 的设置。 看了 这篇文档 后理解了

    如果浏览器请求包括Access-Control-Request-Headers字段,则Access-Control-Allow-Headers字段是必需的。它也是一个逗号分隔的字符串,表明服务器支持的所有头信息字段,不限于浏览器在"预检"中请求的字段。

    然后看了请求头中确实 包括Access-Control-Request-Headers

    然后成功返回接口信息

    参考 文档: http://www.ruanyifeng.com/blog/2016/04/cors.html


    Hi, Eric
  • 相关阅读:
    发一个多维数组转xml格式的php函数方法
    php 返回json和jsonp格式
    phpstudy修改端口及网站根目录和访问 localhost 显示目录文件夹
    web后端开发语言Java和PHP的比较
    VSCode 的PHP常用插件及安装
    Nginx服务器的Websockets配置方法
    WebSocket-demo
    前端资源
    HTTPS 升级指南
    HTTP 协议入门
  • 原文地址:https://www.cnblogs.com/hi-eric/p/11598439.html
Copyright © 2020-2023  润新知