gpt4 book ai didi

javascript - 上传图像 - 它们中是否有域名 - chrome 不发送 session ID

转载 作者:行者123 更新时间:2023-11-28 01:02:09 25 4
gpt4 key购买 nike

为了测试,我从网上下载了图像,并使用 chrome 中的值文件上传进行上传...chrome 没有随这些请求 header 一起发送 session cookie(我在服务器端没有看到它/尽管我在开发人员工具上看到它) )...chrome 是否知道这些图像来自不同的域。发生了什么...是否有解决办法来传递 session ID(作为 cookie)。它也发生在 IE10 中,这让我相信它是某种标准。而不仅仅是 Chrome 物的问题。 firefox/safari/opera 不存在这个问题

上传到本地主机时没问题。仅当上传到具有域名的不同服务器时,才会出现此问题,导致为此创建新 session 。

更新:我已经添加了 xhr.withCredentials = true 仍然没有用。还在服务器端添加到上传网址...

res.setHeader 'Access-Control-Allow-Origin', '*'
res.setHeader 'Access-Control-Allow-Credentials', true

我不知道这会有多大帮助,因为我已经发送了上传文件,而响应 header 不会有太大帮助。

基本上问题是我无法访问服务器端的 session 变量,因为 session id/sid cookie 不会返回/我无法将一些上传详细信息保存到当前 session 中(因为这是一个新 session )。

更新:我尝试使用 Paint 在桌面上创建图像。即使这样,Chrome 也不会发送 Cookie。真的让我抓狂...

最佳答案

首先,先说一下基础知识,这与图像的来源无关。 Chrome 或其他浏览器并不关心您从哪里获取图像。

很难准确猜测发生了什么,这将有助于查看 jsfiddle 或更多设置说明,但根据我的猜测,您可能会在托管上传按钮的页面上使用不同的域以及您发送文件的目标 url(即使其中一个使用 ssl,另一个使用 http 也会有所不同)。如果未使用基本域 (yourdomain.com) 设置 cookie,则即使不同的子域也不允许传递 cookie

因此,如果子域是问题所在,您知道该怎么做 - 设置一个基本域,以便您的 cookie 可以运行在任何子域上。如果是 http 与 https,您需要始终使用 https(或 http),因为您无法在这两者之间切换 cookie。

如果不是这样,或者您使用的是完全不同的域,您可以通过脚本在本地访问您的 cookie(如果它们没有标记为仅限 http),并将它们添加到上传请求中。 Valum 2.0(不知道 v1.0)允许您向请求添加参数,如下所示:

var uploader = new qq.FileUploader({
element: document.getElementById('file-uploader'),
action: '/server-side.upload',
// additional data to send, name-value pairs
params: {
param1: 'value1',
param2: 'value2'
}
});

您无法通过脚本在非页面域的域上设置 cookie,因此要使用完全不同的域,您唯一的选择是使用请求参数。

关于javascript - 上传图像 - 它们中是否有域名 - chrome 不发送 session ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com