能否使用JavaScript修改HTTP请求头?

9

是否可以使用某种JavaScript来更改或设置HTTP请求的标头?


3
@Thiago,当你说“html”时,你是指“http”。HTML 是从 HTTP 请求返回的文本格式。此外,你是在讨论异步请求(例如 Ajax),还是浏览器发出的请求(例如,当用户单击链接时,浏览器会发送一个请求以获取新资源)? - Mark Hildreth
最初我的意思是浏览器在链接被点击后发出的请求,然而 Ajax 也可能解决我的问题。对于 HTML / HTTP 的错误我很抱歉。 - thiagocfb
2个回答

11

在javascript被下载甚至解释之前,请求头就已经被传递过去了。简短的答案是否定的。

然而,如果你是在ajax调用的上下文中(我们以jQuery为例),请求头可以被编写。

请参见使用jQuery读取来自AJAX调用的标题使用jQuery在发起AJAX调用之前设置标题

但是,如果你的javascript是服务器端的(例如node.js),那么答案是肯定的(由于帖子提到了HTML,可能不是这种情况):

var body = 'hello world';
response.writeHead(200, {'Content-Length': body.length,'Content-Type': 'text/plain' });

1
说HTML是我的错误,它是服务器端的,我相信你的答案会对我有很大帮助!谢谢!! - thiagocfb

11

通过使用XMLHttpRequest对象,您可以使用setRequestHeader函数。

以下是一些示例代码:

var xhr = new XMLHttpRequest()
xhr.open("GET", "/test.html", true);
xhr.setRequestHeader("Content-type", "text/html");

xhr.send();

setRequestHeader方法必须在调用open方法之后、send方法之前被调用。

更多信息请查看: https://developer.mozilla.org/en/DOM/XMLHttpRequest#setRequestHeader()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接