zoukankan      html  css  js  c++  java
  • php前后端分离项目跨域问题解决办法

    由于之前一直没有做过前后端分离项目,导致走了不少弯路,而且还采用了一种及其不优雅的方法

    (在第一次请求的时候把服务器返回的session id保存起来,后续请求的时候把该session id作为参数传递给后端,

    后端在每次请求的时候先判断客户端传递过来的参数中session id是否为空,不为空则设置当前session id为传递过来的session id,然后session_start,为空则直接session_start。)

    上面那样做的原因是,ajax请求无法获取header、cookie等信息。但是后来发现有更方便的解决方法。ajax请求中可以设置下面两个参数,浏览器会自动帮你保存、发送这些header信息。

    xhrFields: { withCredentials: true },
    crossDomain: true,
    $.ajax("https://example.com/v2/whatever", {
         method: 'GET',
         xhrFields: { withCredentials: true },
         crossDomain: true,
         success: whatever_success,
         error: whatever_error
    });
    

    php端需要设置

    $origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';
    // 允许所有跨域请求,测试用,生产环境请使用具体域名代替
    header('Access-Control-Allow-Origin:'.$origin);
    
    header('Access-Control-Allow-Credentials:true');
  • 相关阅读:
    业务需求、用户需求和功能需求
    乐观锁的两种实现方式
    数据字典
    freemarker(ftl)标签用法
    commons-lang常用方法
    前端与后端分离
    jar包导入本地maven库的操作
    本地打jar包到本地的Maven出库
    MyEclipse中好用的快捷键汇总整理
    简单的反编译class文件并重新编译的方法
  • 原文地址:https://www.cnblogs.com/eleven24/p/7473402.html
Copyright © 2011-2022 走看看