Javascript:如何强制 POST 请求将用户视为未经过身份验证

标签 javascript ajax xmlhttprequest

我正在使用 Javascript 和 XmlHttpRequest POST 到同一站点上的另一个 URL。用户必须经过身份验证才能访问 Javascript 运行的页面,但我需要以未经身份验证的用户身份将 POST 提交到第二个 URL(以防止服务器运行始终为经过身份验证的用户运行的代码)。有没有办法提交 POST,使其看起来来自未经身份验证的用户(这样服务器就不会从 session 中提取用户的身份验证信息,并将其视为已通过 POST 身份验证)?

例如,有没有办法只为 POST 打开一个新 session ,或者只为 POST 更改 session ID?

注意:

  • 我尝试使用不存在的用户的凭据显式执行授权,但这没有任何区别。
  • 如果可以使用 ajax 而不是 XmlHttpRequest 来完成此操作,那么这是一个可接受的解决方案。

最佳答案

不幸的是,这不能仅在 JavaScript 中实现,因此您必须在服务器上进行一些更改。您有两个选择:

  • 您可以将 session cookie 标记为 HttpOnly,这样它就不会与您的请求一起发送。但这意味着您的所有请求都会以未经身份验证的用户身份发送。

  • 第二个选项是为此端点使用子域。 Cookie 仅在同一域上与 XmlHttpRequest 一起发送,以防止跨站点脚本编写。因此,如果您将服务器端点从 www.example.com/myresource 移至至api.example.com/myresource ,cookie将不会被发送。

关于Javascript:如何强制 POST 请求将用户视为未经过身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45925732/

相关文章:

javascript - 如何使用 javascript 中的 http.post 将图像发送到服务器并在 mongodb 中存储 base64

javascript - Firefox 移动设备上的相机访问问题

javascript - Chrome 无法像 Firefox、Safari 一样处理分块响应

javascript - GAE( python ): set Access-Control-Allow-Origin

仅当元素存在时 Ajax 渲染

javascript - Highcharts 在开始时就失去了太多点

javascript - 使用ajax将javascript变量传递给PHP但它给出错误

cookies - hls.js CORS 使用 AWS Cloudfront 问题与 Cookies

javascript - 如何为以下 Json 格式创建 JavaScript 逻辑

JavaScript 突出显示选定的表格行