(但是我将其他答案之一标记为已接受,而不是我自己的答案,因为它使我半途而废,并以此来奖励自己的努力)
似乎无法通过与链接设置HTTP请求标头<a href="...">
,而只能使用来完成XMLHttpRequest
。
但是,链接到的URL是应下载的文件(浏览器不应导航至其URL),而且我不确定是否可以使用AJAX来完成。
此外,返回的文件是一个二进制文件,而AJAX并非用于此目的。
如何使用添加了自定义标头的HTTP请求触发文件下载?
编辑:修复断开的链接
尝试
html
<!-- placeholder ,
`click` download , `.remove()` options ,
at js callback , following js
-->
<a>download</a>
js
$(document).ready(function () {
$.ajax({
// `url`
url: '/echo/json/',
type: "POST",
dataType: 'json',
// `file`, data-uri, base64
data: {
json: JSON.stringify({
"file": "data:text/plain;base64,YWJj"
})
},
// `custom header`
headers: {
"x-custom-header": 123
},
beforeSend: function (jqxhr) {
console.log(this.headers);
alert("custom headers" + JSON.stringify(this.headers));
},
success: function (data) {
// `file download`
$("a")
.attr({
"href": data.file,
"download": "file.txt"
})
.html($("a").attr("download"))
.get(0).click();
console.log(JSON.parse(JSON.stringify(data)));
},
error: function (jqxhr, textStatus, errorThrown) {
console.log(textStatus, errorThrown)
}
});
});
jsfiddle
http://jsfiddle.net/guest271314/SJYy3/
问题内容: 我的应用程序中有一个需要基本身份验证的特定请求,因此我需要为该请求设置Authorization标头。我读过有关设置HTTP请求标头的信息,但据我所知,它将为该方法的所有请求设置标头。我的代码中有这样的内容: 但我不希望我的每一个帖子请求都发送此标头。有什么方法可以仅为我想要的一个请求发送标头吗?还是我必须在请求后将其删除? 问题答案: 传递给每次调用标头的config对象中有一个标头
问题内容: 我需要将“授权”请求标头设置为httpXMLRequest。在网格定义中,我尝试通过ajaxGridOptions进行如下设置: 并使用如下所示的beforeSend事件: 以上都不适合我。什么是正确的语法? 谢谢!! 问题答案: 例如,您可以使用jqGrid的loadBeforeSend事件处理程序,其定义如下:
大家好。 此外,在请求中有一个基本认证,在这种情况下,我将它包含在邮递员中,它工作正常。另一方面,在我的C#脚本中,我是这样执行的: *这是我的模型,其中包含所有数据,用于将对象序列化为JSON。 *这是我创建POST请求的助手类。我插入所有需要的数据,然后将对象序列化为JSON,正如你们中的一些人建议我这样做的那样。它相当干净。 如果有人知道如何处理这件事,那将是非常感激的。我将继续尝试如何解决
问题内容: 我想在使用Spring的请求中设置的值。 这是我的Spring请求处理代码 这是我的Java REST客户端: 这对我有用;我从服务器端获取了JSON字符串。 我的问题是:当我使用RestTemplate时,如何指定标头(例如)和请求方法(例如,…)? 问题答案: 我建议使用可以接受的方法之一,也可以为其设置。(你也可以指定要使用的HTTP方法。) 例如, 我喜欢这种解决方案,因为它是
我的问题是:在使用RESTTemplate时,如何指定头(例如、,...)和请求方法(例如、,...)?
问题内容: 在使用XMLHttpRequest进行AJAX调用时,似乎无法从JavaScript更改大多数请求标头。请注意,必须在Gecko浏览器中调用when。设置_Referer时_ ,它没有设置(我查看了使用Firebug和Tamper Data发送的请求标头)。当我设置User-Agent时,它完全搞砸了AJAX调用。但是,设置接受和_内容类型_确实可以。我们是否无法在Firefox 3中