自定义标头在客户端不可见

时间:2016-06-03 12:33:21

标签: javascript http-headers asp.net-web-api2 httpresponse

我在C#web api中有以下代码

var deferred = this.$q.defer();
this.$http({
              method: 'GET',
              url: someURL,
              responseType: 'arraybuffer'
}).then(function (response: any) {
     var blob = new Blob([response.data], { type: "application/octet-stream" });
     var link = document.createElement('a');
     var url = URL.createObjectURL(blob);
     link.setAttribute('href', url);
     link.setAttribute("download", "demo.doc");
     link.click();
     deferred.resolve();
   });
   return deferred.promise;

并在客户端跟进

{content-type: "application/octet-stream", cache-control: "private"}

但是当我在客户端javascript上添加了对response.headers()的监视时,它只会向我显示

class NewUserForm(Form):
    username = TextField('Username', [validators.Required()])

    def __init__(self, *args, **kwargs):
        Form.__init__(self, *args, **kwargs)
        self.user = None

    def validate(self):
        rv = Form.validate(self)
        if not rv:
            return False

        user = User.query.filter_by(
            username=self.username.data).first()
        if user is not None:
            self.username.errors.append(' username taken ')
            return False

        self.user = user
        return True

有人可以帮我找到fileName标题的位置吗?

1 个答案:

答案 0 :(得分:0)

我注意到的第一件事就是你的'添加'应该是'添加',我想这可能是你最后的错字但是想指出。

result.Content.Headers.Add("fileName", Path.GetFileName(tempFileName ));

我可以看到您使用angular的$ http服务来进行服务器ajax调用,您可以使用响应对象的'headers'属性,如下所示。

response.headers('fileName')

如果您正在使用jQuery,那么您可以简单地使用以下内容:jqXHR是jQuery的jqXHR对象,它是XMLHTTPRequest对象的超集。

jqXHR.getResponseHeader('filename')