标签: response-headers

为什么响应头从CORS AJAX响应中为空?

使用jsonp的AJAX请求到外部Play!1.2.4 Heroku上的应用程序,它成功返回数据,返回null getResponseHeaders().

这是我的代码:

var ajaxresult;
    ajaxresult = $.ajax({
    'complete': function (jqXHR, status) {            
        console.log('Complete!');
        console.log(status);
        console.log("on compelte: " + jqXHR.getAllResponseHeaders());
    },
    'dataType': "jsonp",
    'error': function (jqXHR, status, error) {
        console.log('Error!');
        console.log(status);
        console.log(error);
        console.log("on error: " + jqXHR.getAllResponseHeaders());
    },
    'success': function (data, status, jqXHR) {
        console.log('Success!');
        console.log(status);
        console.log(data);
        console.log("on success: " + ajaxresult.getAllResponseHeaders());
        console.log("on success(2): " + jqXHR.getAllResponseHeaders());
    },
    'type': 'GET',
    'url': url + "findAllSpecials"
});
Run Code Online (Sandbox Code Playgroud)

如果我转储jqXHR的内容,我得到:

"readyState: 4","setRequestHeader: function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this}","getAllResponseHeaders: function(){return s===2?n:null}","getResponseHeader: function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c}","overrideMimeType: function(a){s||(d.mimeType=a);return this}","abort: …
Run Code Online (Sandbox Code Playgroud)

jquery playframework response-headers playframework-1.x

3
推荐指数
1
解决办法
5234
查看次数

Java Servlet 3.0规范建议公开X-Powered-by。这不是安全的坏习惯吗?

在阅读Servlet 3.0规范时,我遇到了以下问题,并想知道这是否真的是推荐的做法。我记得出于安全原因,遇到过建议不要包含此信息:

建议容器使用X-Powered-By HTTP标头发布其实现信息。该字段值应包含一种或多种实现类型,例如“ Servlet / 3.0”。可选地,可以在括号内的实现类型之后添加容器和基础Java平台的补充信息。容器应可配置为禁止显示此标头。这是此标头的示例:

X-Powered-By:Servlet / 3.0 JSP / 2.2(GlassFish v3 JRE / 1.6.0)

例如,在这里,它反对这种做法。我曾经使用一种工具来分析我的网站中的潜在问题,然后返回了一个安全警告和删除X-Powered-By标头的建议。

java security servlets servlet-3.0 response-headers

3
推荐指数
1
解决办法
5562
查看次数

ajax响应:无法读取响应中的所有标头

我正在使用 ajax ( ) 发出发布请求CORS,并且正在设置标头 ( Content-Type:application/x-www-form-urlencoded) 并且我正在尝试读取响应的标头。这是我所做的:

function makePostRequest(url, data, headers, httpVerb, dataType, elementId) {
    $.ajax({
        url: url,
        type: httpVerb,
        data: data,
        headers: headers,
        dataType: dataType,
        success: function(data, textStatus, jqXHR) {
            $("#" + elementId).val(jqXHR.responseText);
            alert(JSON.stringify(jqXHR));
        },
        error: function(jqXHR, textStatus, errorThrown) {
            $("#" + elementId).val(jqXHR.responseText);
        }
    }).then(function(data, status, xhr) {
        console.log(xhr.getAllResponseHeaders());
    });
}
Run Code Online (Sandbox Code Playgroud)

但在控制台中仅打印

Content-Type: application/x-www-form-urlencoded; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

在 chrome 开发者工具中我看到: 在此输入图像描述

如何获取所有这些标头?

PS:我使用的是 Chrome,而不是 Firefox ()

我问如何获取所有标头,而不是为什么我只得到一个标头(如果不可能,我会接受这个答案)。

ajax response-headers

3
推荐指数
1
解决办法
1532
查看次数

WebClient 最大标头大小

有什么方法可以配置响应的最大标头大小吗?

我从 netty 框架收到以下错误:

io.netty.handler.codec.TooLongFrameException: HTTP header is larger than 8192 bytes.
    at io.netty.handler.codec.http.HttpObjectDecoder$HeaderParser.newException(HttpObjectDecoder.java:983)
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Run Code Online (Sandbox Code Playgroud)

显然reactor为此添加了一个API,但我不知道这在spring Web Flux的WebClient中是如何控制的。我正在使用以下版本

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
        <version>2.3.2.RELEASE</version>
      </dependency>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

response-headers reactor-netty spring-webflux

3
推荐指数
1
解决办法
5094
查看次数

如何在 Blazor WASM 客户端中访问 Httpclient 标头

我的客户端代码调用 API,并且尝试从响应标头获取返回的 ETag 值。如果我使用 Fiddler,我可以看到响应包含 ETag 标头,如果我使用 Postman 进行 API 调用,我可以看到 ETag 标头,但无论我采取什么方法尝试检索代码中的标头,我返回的都是无效的。

API 调用本质上是:

// create request object
var request = new HttpRequestMessage(HttpMethod.Get, url);
// add authorization header
request.Headers.Authorization = new AuthenticationHeaderValue("bearer", await GetBearerToken());
// send request
HttpResponseMessage response = await _client.SendAsync(request);
Run Code Online (Sandbox Code Playgroud)

显示 Etag 的 Fiddler 响应标头

邮递员的回应是;

邮递员响应标头

我花了几个小时搜索并尝试网络上的示例,但无论我尝试什么,我都无法获取 ETag 标头。

使用下面的示例代码,我确实获得了返回的 Postman 响应标头中所示的前 2 个标头,但没有获得 ETag 标头/值。

String allResponseHeaders = Enumerable
    .Empty<(String name, String value)>()
    .Concat(
    response.Headers
    .SelectMany(kvp => kvp.Value
    .Select(v => (name: kvp.Key, value: v))
    )) …
Run Code Online (Sandbox Code Playgroud)

c# httpclient response-headers blazor

3
推荐指数
1
解决办法
5248
查看次数

如何使用 Fetch 从响应标头获取内容类型

我正在尝试访问content-type从我的GET请求返回的内容,以便我可以决定我想要的预览类型(html可能通过 iframe 进行预览,对于 PDF 可能通过某些查看器进行预览)。问题是,当我执行console.log(response.headers)返回的对象时,其中没有内容类型,但是当我检查网络选项卡时,响应标头具有内容类型:html/text。如何从响应标头获取内容类型?这就是我的 GET 请求的样子

const getFile = async () => {
    var requestOptions = {
      method: "GET",
      headers: context.client_header,
      redirect: "follow",
    };
    let statusID = context.currentStatus.ApplicationID;
    var response = await fetch(
      process.env.REACT_APP_API_ENDPOINT +
        "/services/getStatus?ApplicationID=" +
        statusID,
      requestOptions
    );

    console.log(response.headers);

    if (response.ok) {
      let fileHtml = await response.text();
      setfileURL(fileHtml);
    } else {
      alert.show("Someting went wrong");
    }
  };
Run Code Online (Sandbox Code Playgroud)

javascript get response-headers fetch-api

3
推荐指数
1
解决办法
7035
查看次数

从 C# 6 中的响应标头中删除 SERVER

我有一个 .net 6.0 C# API(使用 Kestrel 服务器在 Mac 上开发),它在响应标头中返回服务器。我尝试过的所有解决方案均适用于 6 年级之前的学生,并且不再相关。

我在我的Program.cs中尝试过:

app.Use((ctx, next) => {
    var headers = ctx.Response.Headers;

    headers.Add("X-Frame-Options", "DENY");
    headers.Add("X-XSS-Protection", "1; mode=block");
    headers.Add("X-Content-Type-Options", "nosniff");
    headers.Add("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload");

    headers.Remove("Server");

    return next();
});
Run Code Online (Sandbox Code Playgroud)

这不会删除服务器,但会添加其他标头。如果我添加带有空格的服务器属性(例如headers.Add("Server", "");),则不会显示服务器名称 (Kestrel),但标头属性仍然会出现。这可能达到了目的,但我宁愿它根本不出现。

ChatGPT(我知道,但我尝试了它作为最后的手段),建议

var host = new WebHostBuilder().UseKestrel(options => options.AddServerHeader = false).UseStartup<StartupBase>().Build();
Run Code Online (Sandbox Code Playgroud)

但这给出了运行时错误无法实例化服务类型“Microsoft.AspNetCore.Hosting.IStartup”的实现类型“Microsoft.AspNetCore.Hosting.StartupBase”。

作为一个不太重要的附带问题,由于删除服务器是最佳实践,我想知道为什么默认功能是包含它而不是省略它。难道不应该有责任添加它吗?包含该值的用例是什么?

c# response-headers kestrel-http-server .net-6.0

3
推荐指数
1
解决办法
5402
查看次数

从fetch()提取JSON和标头

我正在为一个简单的react / redux应用程序建模auth层。在服务器端,我有一个基于devise_token_auth gem 的API 。

fetch用来发布登录请求:

const JSON_HEADERS = new Headers({
  'Content-Type': 'application/json'
});

export const postLogin = ({ email, password }) => fetch(
  `${API_ROOT}/v1/auth/sign_in`, {
    method: 'POST',
    headers: JSON_HEADERS,
    body: JSON.stringify({ email, password })
});

// postLogin({ email: 'test@test.it', password: 'whatever' });
Run Code Online (Sandbox Code Playgroud)

这行得通,我得到200响应以及所需的所有数据。我的问题是,信息在响应正文和标头之间划分。

  • 正文:用户信息
  • 标头:访问令牌,有效期等

我可以这样解析JSON主体:

postLogin({ 'test@test.it', password: 'whatever' })
  .then(res => res.json())
  .then(resJson => dispatch(myAction(resJson))
Run Code Online (Sandbox Code Playgroud)

但是,这样myAction就不会从标头中获取任何数据(在解析JSON时丢失)。

有没有办法从fetch请求中获取标头和正文?谢谢!

javascript response response-headers fetch-api

2
推荐指数
1
解决办法
3176
查看次数

从 python 请求中的response.headers获取位置

我正在使用 pythonrequests并做一个post

import requests  
response = requests.post('https://petdogs.net/search/?input=abcdefgh', 
headers=HEADERS, 
allow_redirects=False)

print(response.headers)
Run Code Online (Sandbox Code Playgroud)

这些是我可以在浏览器的开发人员工具中看到的标头中的值response,我想获取其值location

content-language: en-gb
content-length: 0
content-type: text/html; charset=utf-8
date: Wed, 07 Jul 2021 17:44:52 GMT
location: /product/id=12345/
server: nginx/1.14.0 (Ubuntu)
vary: Accept-Language, Cookie, Origin
x-content-type-options: nosniff
x-frame-options: DENY
Run Code Online (Sandbox Code Playgroud)

但当我这样做时,print(response.headers)我只看到这个

{'Server': 'nginx/1.14.0 (Ubuntu)', 'Date': 'Wed, 07 Jul 2021 18:23:45 GMT',
'Content-Type': 'text/html', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive',
 'X-Frame-Options': 'DENY', 'Vary': 'Accept-Language, Origin', 
'Content-Language': 'en', 'X-Content-Type-Options': 'nosniff', 'Content-Encoding': 'gzip'}
Run Code Online (Sandbox Code Playgroud)

并且 location失踪了

我看到几个回答都谈到了

'Access-Control-Expose-Headers': 'Location' …
Run Code Online (Sandbox Code Playgroud)

python urllib response-headers python-requests

2
推荐指数
1
解决办法
5845
查看次数

对于 axum,如何为处理程序设置标头

我似乎找不到如何为响应设置标头。

我一直在寻找如何做到这一点,但还没有找到一个简单的方法来做到这一点。

特别强调标content-type头,如何从响应处理程序设置标准标头和自定义标头,记住我已经可以做到thing.into_response()

http-headers rust response-headers rust-axum

2
推荐指数
1
解决办法
4151
查看次数