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

时间:2017-08-28 19:02:47

标签: javascript ajax xmlhttprequest

我使用Javascript和XmlHttpRequest来POST到同一站点上的另一个URL。必须对用户进行身份验证才能访问运行Javascript的页面,但我需要将POST作为未经身份验证的用户提交到第二个URL(以防止服务器运行始终为经过身份验证的用户运行的代码)。是否有任何方式提交POST以使其看起来来自未经过身份验证的用户(因此服务器不会从其会话中提取用户的身份验证信息并将其视为已通过POST验证) ?

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

注意:

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

1 个答案:

答案 0 :(得分:1)

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

  • 您可以将会话Cookie标记为HttpOnly,因此不会将其与您的请求一起发送。但这意味着,您的所有请求都将作为未经身份验证的用户发送。

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