当前位置: 首页 > 知识库问答 >
问题:

设置并从javascript标记请求返回cookie

秦永望
2023-03-14

我有以下情况:

  1. another_domain.com页面中带有src=domain1.com的JavaScript标记
  2. JavaScript标记从Domain1.com服务器返回cookie标头和脚本内容
  3. 脚本内容收集数据并通过请求将其发送到domain1.com

我希望能够在点2中设置一个cookie,并在点3中恢复它。我已经能够通过返回如下所示的Set-Cookie头来设置cookie:

set-cookie:cookiename=“cookievalue”;版本=1;domain=domain1.com;路径=/;samesite=none;最大年龄=600;安全

但是我无法在第3点的请求中恢复它,因为cookie没有与请求一起发送。

所以,在这一点上有两个问题:

>

  • 需要在第二个请求中手动发送cookie吗?当测试重定向时,cookie头“自动附加”到第二个请求,我能够恢复它,但这不会发生在来自javascript标记的请求中。

    我只能在https(安全cookie)中设置cookie,并从脚本中使用samesite=none?在没有Secure和samesite=none的情况下或在http环境中尝试时,没有设置cookie,开发人员控制台会引发跨站点错误。

    谢谢你的阅读。

  • 共有1个答案

    苏鹏鹍
    2023-03-14

    这里有几件事需要考虑。首先,我们必须注意到,我们正面临着跨域通信的情况。

    如果您需要在步骤3中发送由服务器在步骤2中设置的Cookie,则必须在发出请求时显式配置它。在使用XMLHTTPRequest的情况下,必须将With Credentials设置为true,下面是文档。如果使用fetch,请查看请求凭据。

    由于是跨域通信,请确保正确配置了CORS头。当请求凭据模式为“include”时,需要将Access-Control-Allog-Origin标头设置为有效而不是通配符“*”。您还需要access-control-allog-credentials才能true,请在此处检查。

    通过这种配置,在第三步中cookie将“自动附加”(按照您的说法)。出于安全原因,您不能通过JS在跨域设置中设置cookie,请参见此响应。

     类似资料:
    • 问题内容: 在使用XMLHttpRequest进行AJAX调用时,似乎无法从JavaScript更改大多数请求标头。请注意,必须在Gecko浏览器中调用when。设置_Referer时_ ,它没有设置(我查看了使用Firebug和Tamper Data发送的请求标头)。当我设置User-Agent时,它完全搞砸了AJAX调用。但是,设置接受和_内容类型_确实可以。我们是否无法在Firefox 3中

    • 基本上,我的问题很简单。我正在使用改版作为一个框架,用于与我不控制的服务器进行通信。我想在我的请求上设置某种类型的标记,它会在响应中自动返回。有没有办法做到这一点?

    • 问题内容: 我有一个函数,用关键字声明一个变量。然后,它将启动AJAX请求以设置变量的值,然后从函数中返回此变量。 但是,我的实现失败了,我也不知道为什么。 这是代码的简化版本; 问题答案: AJAX请求是异步的。您的sendRuest函数正在执行,正在发出AJAX请求,但它是异步发生的;因此,sendRuest的其余部分在AJAX请求(和onreadystatechange处理程序)执行之前就已

    • 我已经使用zappa在aws lambda上部署了一个flask应用程序,现在该应用程序在所有endpoint上都运行良好,除了我的主endpoint,当我对其发出post请求时,它返回{“消息”:“endpoint请求超时”} 真的需要一个修复或想法如何克服这个我需要调用分析路线,部署的url是 https://2ixfyfcsik.execute-api.eu-west-2.amazonaws

    • 我的后端是sprin引导应用程序,前端是vue js 但是cookie值没有设置在请求头部和所有其他api失败与身份验证问题,因为cookie值(会话ID)不存在于头部 样本响应头部与set-cookie身份验证 下面是我在vue.config.js中的代理配置 这是我的axios实例创建与"with凭据:真" 下面是我在服务器端的web安全配置 注意:这在邮递员中工作,因为邮递员会自动将cook

    • 问题内容: 使用PHP,是否可以使用发送HTTP标头? 我知道您可以从文件中发送用户代理。但是,你能不能也发送其他信息,如,和用? 还是有另一个功能可以完成此任务? 问题答案: 实际上,在进一步阅读该功能后: 您也许可以遵循这种模式来实现您想要的目标,但是我还没有亲自测试过。(如果它不起作用,请随时查看我的其他答案)