我jQuery.ajax
用来建立 HTTP 连接。在我的项目中,我想设置自定义 http 标头,但我只想发送我设置的那些。目前正在发送我的标头,但除此之外还有一些我没有设置的其他标头。
这就是我添加自定义标题的方式:
$.ajax("http://fakedomain.foo", {headers: {header1: "value1", header2: "value2"}});
即使无法设置整个标题集合,我也可能会很好,但只能添加额外的标题。但即使在这种情况下,有时我的标头在发送之前也会被修改。例如,如果我添加这些标题:
{
"Connection": "close",
"Accept-Encoding": "deflate, gzip",
"Accept": "text/plain",
}
然后这就是实际发送的内容(我使用 Wireshark 进行了捕获只是为了验证这一点)
{
"Connection": "close",
"Accept-Encoding": "gzip,deflate,sdch",
"Accept": "text/plain, */*; q=0.01",
"Accept-Language": "es-ES,es;q=0.8",
"Dnt": "1",
"Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
...
}
正如你所看到的,一些邪恶的妖精正在调整我的标题,它已经将“sdch”编码添加到“Accept-Encoding”标题中,并且还更改了“Accept”标题,以便它也接受*/*
. 如果 WS 很挑剔并且需要根据标头采取不同的操作,这将是一个真正的问题。
所以总结一下:
有没有办法只发送我的标题而不发送额外的标题?
2. 如果没有,有没有办法在不修改它们的情况下添加我的自定义标题?
更新:
我的错,我没有正确设置标题。(我发布的代码是正确的,但是我的单元测试中有一个错误,所以我的标题实际上没有添加,而是发送了默认的。修复这个之后,我可以看到我的标题正在发送正确的文本,并且没有修改。所以忘记#2。问题#1仍然适用。