ajax 跨域 session 丢失问题

2023-10-26

ajax 跨域时session丢失了!!!

解决方法:

首先我 Google 了一下这个问题的原因,我找到了这个:

(1)Access-Control-Allow-Origin该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求。(2)Access-Control-Allow-Credentials该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求
之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能
设为true,如果服务器不要浏览器发送Cookie,删除该字段即可。(3)Access-Control-Expose-Headers该字段可选。CORS请求时,XMLHttpRequest对象的getResponseHeader()方法只能拿到6个基本字段:
Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。如果想拿
到其他字段,就必须在Access-Control-Expose-Headers里面指定。上面的例子指定,
getResponseHeader('FooBar')可以返回FooBar字段的值。
3.2 withCredentials 属性上面说到,CORS请求默认不发送Cookie和HTTP认证信息。如果要把Cookie发到服务器,一方面要服务器
同意,指定Access-Control-Allow-Credentials字段。Access-Control-Allow-Credentials: true

我写了一个 demo 来试验这个方法:

  • 前端代码

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title>    <script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script></head><body>name: <input type="text" name="inputTest" value=""><br>password: <input type="password" name="pwd" id="pwd" value=""><br><button id="but">提交</button></body><script>    $("button").click(function () {        var names=$("input[name='inputTest']").val();        var pwds=$("input[name='pwd']").val();        var url = 'http://example.com/demo/test.php';        var postData = {'name':names, 'pwd':pwds};        $.ajax({            type: "POST",            url: url,            data:postData,            dataType: 'jsonp',            jsonp:'callback',            xhrFields: {                withCredentials: true            },            crossDomain: true,            success:function(res){                console.log(res.name)            },            error:function(){}        })    });</script></html>

后端 php 代码:(test.php)

<?php//简单测试上述方法header("Access-Control-Allow-Creadentials: true");header("Access-Control-Allow-Origin: http://shili.com");$name = $_REQUEST['name'];$pwd = $_REQUEST['pwd'];session_start();$_SESSION['name'] = $name;$data = ['name' => $_SESSION['name'], 'pwd' => $pwd];$res = json_encode($data);$callback = $_GET['callback'];echo $callback . "($res)";?>

这里需要注意的是:

需要注意的是,如果要发送 Cookie,Access-Control-Allow-Origin 就不能设为星号,必须指定明确的、与请求网页一致的域名。同时,Cookie 依然遵循同源政策,只有用服务器域名设置的 Cookie 才会上传,其他域名的 Cookie 并不会上传,且(跨源)原网页代码中的 document.cookie 也无法读取服务器域名下的 Cookie。

ceshi.php

<?phpsession_start();$name = $_SESSION['name'];var_dump($name);?>

测试结束,可以正确的打印sessionname的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ajax 跨域 session 丢失问题 的相关文章

  • jquery 在同一函数中使用两个完成回调,一个具有数据类型 json,一个不具有数据类型

    尝试使用两个donejQuery 函数中的回调 一种是 JSON 数据类型 另一种不是 第一个调用 php 函数data这不是一个 JSON 数组 我想要的第二个将从同一个 php 调用中调用 JSON 编码的数组 我需要将 ID 数组传递
  • 根据用户 ID 限制下拉选项

    我问这个问题是因为我不确定解决问题的最佳方法 问题 我有一个预先填充的下拉列表 其中包含 1 000 个左右的数字 我需要根据使用下拉列表的用户来限制下拉列表中显示的数字 我想到的解决方案 使用 jQuery 隐藏所有数字 使用 jQuer
  • 使用JQUERY/JSON自动填充选择下拉框

    好吧 我花了很多时间查看示例 但找不到一个对我的情况有足够帮助的示例 我有一个 JSON 文件 对此示例进行了简化 Company Position Manager Name 11 joe 12 bill 166 John Position
  • Ajax IndexedDB 删除当前成功上传

    我昨天发布了类似的内容 但它有效 但只删除了数据中的最后一个对象 我想要发生什么 这个ajax上传将处理大量数据 所以我使用indexeddb 这也将在手机上使用 因此 我希望它一次上传一项 如果一项失败 则仅删除数据中的前一项 这样他们就
  • CodeIgniter 和 AJAX 表单提交

    我正在尝试将从表单提交的数据保存到我的 mysql 数据库中 然后将最后发布的项目添加到 div 列表中来更新 div 元素 现在我只是想得到回复 我并不担心目前的格式是否正确 我的问题是表单不会提交e preventDefault 到位
  • JQuery - 拖放文件 - 如何获取文件信息?

    有兴趣使用 JQuery AJAX PHP 构建自己的拖放文件上传 基本上 我想要一个文件上传器 我的网站的用户可以将文件从他们的计算机拖到我创建的 div 中 然后它将为他们上传文件到选定的目的地 我想从头开始构建它 而不使用任何插件 以
  • 无法将 Access-Control-Allow-Origin 添加到我的 WCF 库项目

    我试图理解为什么这个 ajax 调用不起作用 ajax type GET url http localhost 8732 Design Time Addresses InMotionGIT NT Address Service Addres
  • & 符号使我无法使用 jQuery 加载 XML

    我在 XML 文档中显示描述 然后使用 jQuery 将其加载到应用程序中 当我尝试使用 时 它会破坏代码的加载 我也尝试过 38 它也不起作用 是否有解决方法可以让我在 XML 中包含 符号 编辑 结构是
  • Vaadin 与 Bootstrap

    我计划制作一个应用程序 该应用程序在客户端具有复杂表单和逻辑验证的视图 我计划使用 AJAX 进行提交并具有一些视觉吸引力 我想要那些具有 Bootstrap 和 或 CoffeeScript 和 Vaadin 开发经验的人的推荐 我有两个
  • 使用 jQuery AJAX 发送多个数据参数

    我正在向 php 文件发送 ajax 请求 如下所示 function checkDB code userid ajax type POST url profile check code php data code code userid
  • 使用 jQuery 检查链接是否仍然有效

    我创建了一个快速功能 使用 AJAX 检查页面上的每个链接 看看它们是否仍然有效 这似乎有效 但它为每个类添加了成功和错误类 如何让错误回调函数仅在 AJAX 响应为 404 时抛出 li each function this childr
  • Extjs 4(下面有3.4的代码)下载从post请求返回的文件

    我看到了与此略有相关的问题 但没有一个能回答我的问题 我设置了 Ext Ajax request 如下 var paramsStringVar param1 1 param2 two param3 something param4 etc
  • PHP如何在弹出模式中获取用户ID(变量)

    许多员工及其信息显示在页面上 员工信息通过数据库检索 然后通过foreach 循环用于显示符合搜索条件的所有员工 示例如下图所示 现在 当用户单击按钮时 会触发一个简单的 Bootstrap 弹出模式 其中包含一些基本表单字段 从下面的示例
  • 多个异步 AJAX 调用最佳实践

    我有一个关于在单个页面上进行多个 AJAX 调用的 最佳实践 的问题 我需要异步进行 5 个独立的调用 我知道 ajax 本质上是异步的 但我很好奇是否有一种 更干净 或 更好 的方法来执行多个 AJAX 调用 下面是包含多个 AJAX 调
  • 在调用 f:ajax 侦听器之前和之后执行 JavaScript

    有一种简单的方法可以在调用之前和之后调用 JavaScript 操作
  • Codeigniter CSRF仅对一次ajax请求有效

    我想在 jQuery 的更改事件上将图像上传到服务器上 但使用 codeigniter csrf 我只能上传图像一次 如何使用ajax上传图像以进行多个请求 请记住 当我设置此值时 config csrf protection FALSE
  • Symfony 2 FOS 用户捆绑包 Bootstrap 模式 AJAX 登录

    有没有人已经使用 Symfony 2 和 FOS User Bundle 在 Bootstrap 模式中构建了登录表单 这是我现在所拥有的 src Webibli UserBundle Resources config service ym
  • 什么是渐进增强?

    Jeff 在谈论使用 JQuery 编写 stackoverflow 时提到了 渐进增强 的概念 经过快速谷歌之后 我发现了一些关于它的高层讨论 谁能推荐一个作为程序员开始的好地方 具体来说 我一直在用 PHP 编写 Web 应用程序 并希
  • jQuery AJAX 参数未传递给 MVC

    我有点陷入可能是常见的情况 但找不到太多解决方案 我将单个 int 参数传递给 MVC 控制器方法 期望返回 Json 响应 问题是 该参数虽然在客户端填充 但在服务器端无法识别并被解释为空 这是代码 function getBatches
  • 如何在innerhtml中使用ajax和php更新mysql数据库

    如何使用ajax和php更新mysql数据库而不刷新页面 这里有一个好例子 http www w3schools com PHP php ajax database asp 它显示了一个SELECT声明 但它应该是直接的 并且可以轻松地将脚

随机推荐

  • C计数问题---2023河南萌新联赛第(三)场:郑州大学

    解析 n 可以分成两个数 记录每个数的因子对数 乘起来即可 注意当因子相同时 只 1 include
  • Java文件类型校验之Apache Tika

    一 背景 判断文件类型一般可采用两种方式 1 后缀名判断 简单易操作 但无法准确判断类型 2 文件头信息判断 通常可以判断文件类型 但有些文件类型无法判断 如word和excel头信息的前几个字节是一样的 无法判断 使用apache tik
  • flink watermark 生成机制与总结

    flink watermark 生成机制与总结 watermark 介绍 watermark生成方式 watermark 的生成值算法策略 watermark策略设置代码 watermark源码分析 watermark源码调用流程debug
  • 你知道几种延迟队列的实现方案?

    在开发中 往往会遇到一些关于延时任务的需求 例如 生成订单30分钟未支付 则自动取消 生成订单60秒后 给用户发短信 对上述的任务 我们给一个专业的名字来形容 那就是延时任务 那么这里就会产生一个问题 这个延时任务和定时任务的区别究竟在哪里
  • Reid训练代码之数据集处理

    本篇文章是对yolov5 reid这篇文章训练部分的详解 该项目目录为 config reid输入大小 数据集名称 损失函数等配置 configs 训练时期超参数定义 data 存储数据集和数据处理等代码 以及yolov5类别名称等 eng
  • 怎样更改itunes备份位置_什么是iTunes备份文件?

    由于它是由Apple创建的 因此iTunes改变了用户组织和播放音乐和视频的方式 iTunes已经允许数百万用户通过iTunes Store下载他们喜爱的曲目 歌曲和视频 值得庆幸的是 iTunes拥有一个先进的备份系统 能够备份和恢复Ip
  • Android libdvm.so 与 libart.so

    Android libdvm so 与 libart so 系统升级到5 1之后 发现system lib 下面没有libdvm so了 只剩下了libart so 对于libart模式 从4 4就在Developer optins里面就可
  • FsonFormat Eclipse Plugin 一键解决复杂JSON ,快速实现JavaBean

    简介 当开发人员或者测试人员在开发或者测试接口中 去获取到接口返回的结果值时 都要通过JSONObject和JSONArray解析json结构 然后再通过For循环遍历相应的Key 最后把value值进行App展示或者校验是否预期结果 编写
  • 有关树莓派+arduino构建小车

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 Sma
  • eclipse中没有runtime environments_Go语言中的panic和recover

    初识别panic和recover 本节将分析两个经常成对出现的关键字 panic 和 recover 这两个关键字都与 defer 有千丝万缕的联系 也都是 Go 语言中的内置函数 但是提供的功能却是互补的 panic 能够改变程序的控制流
  • opencv 图像雾检测_雾的检测算法

    雾的检测算法相对来说文献不是很多 这次和大家介绍两篇相对来说比较容易实现的两篇文章 其中一篇是基于灰度直方图的方式进行分析检测 另一篇是将rgb图像空间转化为hsv空间进行分析检测 1 灰度图检测 首先来说第一片 Fog Detection
  • 如何用ai写文章?这三个软件可以自动生成文章

    随着人工智能技术的不断发展 ai写作已经成为了当今的热门话题 它是指利用机器学习 自然语言处理等技术 让机器能够像人类一样写作 相较于传统写作方式 ai写作大大提高了写作的效率和质量 可以让我们的创意和技术相融合 其应用范围也非常广泛 无论
  • 探索编程世界的宝藏:程序员必掌握的20大算法

    程序员必须掌握哪些算法 文章目录 1 引言 2 冒泡排序算法 编程世界的排序魔法 3 选择排序算法 排序世界的精确挑选器 4 插入排序算法 排序世界的巧妙插珠者 5 快速排序算法 排序世界的分而治之大师 6 归并排序算法 排序世界的合而为一
  • 统计并输出该字符串中26个英文字母

    字符串 第3题 描述 输入一个字符串 统计并输出该字符串中26个英文字母 不区分大小写 出现的次数 输入 输入一个字符串 输出 分行输出26个英文字母 不区分大小写 出现的次数 输入示例 I am a student 输出示例 a 2 d
  • Python:蒙特卡罗方法模拟解决三门问题

    蒙特卡罗方法与三门问题 蒙特 卡罗方法 Monte Carlo method 也称统计模拟方法 是一种统计学的方法 模拟方法 通过大量随机样本模拟问题 从而获得所要计算的值 三门问题 三门问题 Monty Hall problem 亦称为蒙
  • STM32:TIM_OCxInit函数用法解释

    TIM OC3Init函数是用于初始化定时器TIM的PWM输出通道3的函数 可以使用以下步骤进行使用 创建一个TIM OC InitTypeDef类型的结构体对象 例如命名为TIM OCInitStruct 使用TIM OCStructIn
  • 网络基础知识总结

    一 广域网和局域网 局域网 Local Area Network 简称LAN 也就是内网 局域网就是在固定的一个地理区域内由2台以上的电脑用网线和其他网络设备搭建而成的一个封闭的计算机组 它可以是邻居之间的2台电脑 也可以是一幢100层大楼
  • [深入研究4G/5G/6G专题-41]: URLLC-12-《3GPP URLLC相关协议、规范、技术原理深度解读》-6-MAC层调度器的总体架构、调度器的原理和三种URLLC调度器的增强方案

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文主页 https blog csdn net HiWangWenBing article details 125942872 目录 前言
  • 杭电ACM 1000题

    import java util Scanner public class Main public static void main String args Scanner cin new Scanner System in while c
  • ajax 跨域 session 丢失问题

    ajax 跨域时session丢失了 解决方法 首先我 Google 了一下这个问题的原因 我找到了这个 1 Access Control Allow Origin该字段是必须的 它的值要么是请求时Origin字段的值 要么是一个 表示接受