javascript:如何获取当前资源的 XMLHttpRequest 表示
我希望能够使用 javascript 重新加载当前加载的资源,但在此之前自定义一些标头变量。
在 2 个实际情况下需要/应该使用此方法:
- 作为一种方式,通过真正的 HTTP 登录处理登录,这意味着使用附加的身份验证数据重新加载资源
- 获取同一资源的不同媒体类型表示,这意味着修改在重新发送请求之前接受标头。
由于我需要保持任何其他标头字段不变,因为浏览器会本机发送它,所以我不能简单地使用 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:
- As a way, to handle login via real HTTP-login, which means reloading the resource with attached authentication data
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果它是通过 GET 加载的,您只需创建一个
XMLHttpRequest
并使用document.location.href
作为 URL。浏览器将指定常用的 cookie 标头,因此您的请求标头应该大致相同,除非 GET 更改了非 幂等方式。
如果当前资源是通过 POST 加载的,那么你就不走运了。当前资源的 POST 正文不可用于 JavaScript,因此除非您需要其他方式来获取它或从页面内容推断它。
If it was loaded via GET, you can just create an
XMLHttpRequest
and usedocument.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.