使用来自 JavaScript 的每个请求向服务器端发送信息
Posted
技术标签:
【中文标题】使用来自 JavaScript 的每个请求向服务器端发送信息【英文标题】:Sending info to server side with every request from JavaScript 【发布时间】:2020-08-13 02:49:35 【问题描述】:我想从我的 javascript 应用程序(可以是 vanilla JS、JQuery 或任何基于 SPA 的框架)向服务器端发送一些信息以及每个 AJAX 请求。我们正在使用 JQuery 进行 AJAX 调用。 我不想使用 QueryString 或 Headers 向服务器发送信息。我想对用户保持这些信息的抽象。我在考虑 cookie,但使用 JavaScript 在客户端创建的 cookie 在服务器端不可用。我还想在浏览器关闭后销毁此信息(这意味着此信息是特定于会话的)。
在服务器端,我们使用 ASP.NET WPI (C#)
实现这一点的方法是什么?
【问题讨论】:
你在后端使用什么......也在客户端中,你在使用 fetch 吗?如果是这样,可以将 cookie 发送到服务器 developers.google.com/web/updates/2015/03/… ...如果使用 axios,cookie 会在没有其他设置的情况下发送到服务器...对于 nodejs 服务器,您可以在后端使用cookie-parser
之类的东西...
@gdh 在服务器端,我们使用ASP.NET WPI (C#)
。我们没有使用fetch
。所有的 AJAX 调用都是使用 Jquery 进行的。
也许您的 cookie 关联了错误的域?尝试通过***.com/questions/1458724/…
【参考方案1】:
您可以使用js-cookie 之类的库来设置cookie(或者在纯JS 中使用document.cookie
)。没有 max-age
或过期日期的 cookie 将是一个会话 cookie,并且会在用户关闭浏览器选项卡时过期。
如果 api 和 web 应用在同一个域中,所有 cookie 都会自动发送到后端。例如,如果您的应用在 https://www.yourdomain.com
上,而您的 api 在 https://api.yourdomain.com
上,这将是一个跨域请求,并且必须在 jQuery 中手动启用发送 cookie,使用 withCredentials: true
:
$.ajax(
url: a_cross_domain_url,
xhrFields:
withCredentials: true
);
请参阅jQuery AJAX 的文档。
(同样适用于其他 AJAX 库,如 axios
)
我不是 C# 方面的专家,但这里有一个 link to the docs,其中有一个关于如何检索请求 cookie 的示例。
【讨论】:
以上是关于使用来自 JavaScript 的每个请求向服务器端发送信息的主要内容,如果未能解决你的问题,请参考以下文章
来自 Siebel 的 SOAP 请求在每个元素中都有命名空间