javascript:如何获取当前资源的 XMLHttpRequest 表示

发布于 2024-12-01 23:10:45 字数 373 浏览 0 评论 0原文

我希望能够使用 javascript 重新加载当前加载的资源,但在此之前自定义一些标头变量。

在 2 个实际情况下需要/应该使用此方法:

  1. 作为一种方式,通过真正的 HTTP 登录处理登录,这意味着使用附加的身份验证数据重新加载资源
  2. 获取同一资源的不同媒体类型表示,这意味着修改在重新发送请求之前接受标头。

由于我需要保持任何其他标头字段不变,因为浏览器会本机发送它,所以我不能简单地使用 document.URL 值构造自己的 XMLHttpRequest。相反,我需要获取浏览器为当前资源发送的请求的 XMLHttpRequest 表示形式。

有没有办法在JS中实现这一点?最好使用没有任何 jQuery 魔法的纯 JS。

I want to be able, using javascript, to reload the currently loaded resource, but customising some header variables, before doing so.

This method is needed/should be used in 2 real cases:

  1. As a way, to handle login via real HTTP-login, which means reloading the resource with attached authentication data
  2. To get different media-type representations of the same resource, which means modifying the accept header, before re-sending the request.

As I would need to leave any other header fields unchanged, as the browser would send it natively, I cannot simply construct my own XMLHttpRequest, using the document.URL value. Rather I would need to get hold of a XMLHttpRequest representation of the request, the browser sent for the current resource.

Is there a way to accomplish that in JS? Preferably using pure JS without any jQuery magic.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想你的星星会说话 2024-12-08 23:10:45

如果它是通过 GET 加载的,您只需创建一个 XMLHttpRequest 并使用 document.location.href 作为 URL。

浏览器将指定常用的 cookie 标头,因此您的请求标头应该大致相同,除非 GET 更改了非 幂等方式。

如果当前资源是通过 POST 加载的,那么你就不走运了。当前资源的 POST 正文不可用于 JavaScript,因此除非您需要其他方式来获取它或从页面内容推断它。

If it was loaded via GET, you can just create an XMLHttpRequest and use document.location.href as the URL.

The browser will specify the usual cookie headers, so your request headers should be largely the same unless the GET changed cookies in non-idempotent ways.

If the current resource was loaded via POST, then you are out of luck. The POST body of the current resource is not available to JavaScript so unless you would need some other way to get it or infer it from page content.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文