2017-08-28 20 views
0

我正在使用Javascript和XmlHttpRequest将POST发布到同一站点上的另一个URL。用户必须经过身份验证才能访问运行Javascript的页面,但我需要将POST作为未经身份验证的用户提交给第二个URL(以防止服务器运行始终为经过身份验证的用户运行的代码)。有什么办法提交POST,以便它看起来来自未经过身份验证的用户(因此服务器不会从用户的会话中提取用户的身份验证信息并将它们视为已通过POST身份验证)?Javascript:我如何强制POST请求将用户视为未验证

例如,是否有一种方法可以仅为POST打开新会话,或仅为POST更改会话ID?

注:

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

此页面使用什么样的身份验证?基本的HTTP验证?饼干? – Luka

+0

用户通过登录页面登录到站点,登录页面使用JWT对照服务器端数据库验证用户凭证。 –

+0

你有控制你的服务器吗? – Luka

回答

1

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

  • 要么你标记您的会话cookie为仅Http,所以它不会与您的请求一起发送。但是这意味着,您的所有请求都将作为未经验证的用户发送。

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