相关疑难解决方法(0)

Spring Boot请求标头返回null值

我有一个spring boot项目,里面有一些Rest API.我有两个自定义标题命名request_datetenant分别.

我试图在拦截器中读取这些头的值,但它只读取值tenant并返回null request_date.

重要

  • 我使用过滤器来包装请求对象,因为我想稍后读取请求主体.
  • 有一个过滤器可以添加CORS标头.

当我在localhost上运行我的项目并调试代码时,我成功地读取了两个标头的值.

但是,当我在生产中部署我的应用程序并使用postman或其他客户端发出请求时,request_date标头的值始终读为null.

我不确定这似乎是什么问题.我正在使用Spring boot v1.5.10.RELEASEJDK 1.8

注意:

  • 我试图将标题重命名为input_date.但是,它仍然读为null.

以下是相关代码

TestInterceptor

public class TestInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        String requestDate = request.getHeader("request_date");
        String tenant = request.getHeader("Tenant");

        /*Perform some checks*/

        return super.preHandle(request, response, handler);
    }
}
Run Code Online (Sandbox Code Playgroud)

CorsFilter

public class ApiCorsFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse …
Run Code Online (Sandbox Code Playgroud)

java rest spring http spring-boot

9
推荐指数
2
解决办法
1613
查看次数

Azure blob元数据值的最大长度是多少?

Windows Azure blob元数据中值的最大大小是多少?

我可以看到Web服务器将实施约4k的实际上.

azure-storage-blobs

7
推荐指数
1
解决办法
2270
查看次数

在通过邮递员请求时,服务器端无法提供http请求中带下划线的标头参数

以下是API调用的curl导出失败 -

curl -X GET \
  'http://endpoint.in/dummy/path?mobile=777777777' \
  -H 'Content-Type: application/json' \
  -H 'auth_token: iubsaicbsaicbasiucbsa'
Run Code Online (Sandbox Code Playgroud)

auth_token从日志中检查,服务器端根本不提供标头参数.

然而,当直接作为命令发出时,相同的卷曲也起作用.我安装了最新的postman版本v6.2.3.此外,当通过其他工具(如Chrome的高级REST客户端)请求时,相同的API端点也可以工作.

以前,我还检查了这个帖子http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers

许多服务器(如nginx)都有一个配置,如果设置,则丢弃名称中带下划线的标头.

但是,我无法验证相同,因为我无法确切地知道服务器是如何部署的.它是一个节点应用程序,我们运行此命令来运行应用程序 -

nohup /bin/forever start -o logs/out.log -e logs/err.log app.js
Run Code Online (Sandbox Code Playgroud)

ps -ef | grep node 显示以下内容 -

root      5981     1  0 Jul19 ?        00:00:00 /root/.nvm/v7.2.1/bin/node /usr/lib/node_modules/forever/bin/monitor app.js
root      5991  5981  0 Jul19 ?        00:00:04 /root/.nvm/v7.2.1/bin/node /usr/local/another/path/to/app.js
Run Code Online (Sandbox Code Playgroud)

更新

这也通过Jmeter干扰了我们的自动化测试.

更新

我们在服务器上运行nginx,它似乎在调用节点进程.我们观察到在服务器上工作正常,nginx配置文件有这个设置 -

underscores_in_headers on;
Run Code Online (Sandbox Code Playgroud)

但是这不存在于服务器的配置文件中.

另一个观察 - 我正在使用最新的邮递员版本 - 6.2.5,问题在那里.然而,当我把相同的邮差收集发送给另一个队友并且他在安装邮差之后点击它时,它对他有效.我仍然不确定问题是与邮递员还是服务器设置有关.

http-headers node.js postman

6
推荐指数
1
解决办法
807
查看次数

JasperServer代理CSRF错误

我使用捆绑的Tomcat在Ubuntu 14.04 LTS和Nginx代理上安装了新的JasperReports Server 6.2,这样我就可以访问https://mydomain.xyz/jasperserver.它主要起作用,但我无法管理用户和角色.如果我绕过Nginx并直接进入Tomcat http://123.123.123.123:8080/jasperserver,一切都很完美.日志表明:

2016-02-28 19:44:08,024 ERROR CsrfGuard,http-nio-8080-exec-3:44 - 潜在的跨站点请求伪造(CSRF)攻击被挫败(用户:,ip:127.0.0.1,uri:/ jasperserver /flow.html,错误:请求中缺少必需的令牌)

这与旧的问题完全相同:在nginx后面运行jasperserver:潜在的CSRF攻击.但是我已经尝试过这两种缓解措施,但它仍然无效.

  • 我尝试设置underscores_in_headers on;,首先是in http,然后是in server,然后是两者.
  • 如果没有工作,我去掉了下划线从JASPER_CSRF_TOKENOWASP_CSRFTOKENWEB-INF/esapi/Owasp.CsrfGuard.properties

我重新启动服务器只是为了确保所有内容都已清除并重新启动,但仍然无法正常工作.

我正在寻求解决方案的建议和/或指导哪些方面可以更好地诊断问题.我是Jasper的新手,我的Java/Tomcat技能很生疏.

nginx csrf jasperserver

5
推荐指数
1
解决办法
991
查看次数

配置 Ingress 控制器以转发自定义 http 标头

我们正在按照本指南在 Azure 上设置 AKS 集群

我们在入口控制器后面运行 5 个 .Net Core API,一切正常,请求路由很好。但是,在我们的 SPA 前端,我们正在向 API 发送自定义 http 标头,此标头似乎从未发送到 API,当我们检查 AKS 中的日志记录时,我们看到所需的 http 标头为空。在开发中,一切正常,我们还看到在 AKS 的测试环境中填充了 http 标头,因此我猜测 ingress 正在阻止这些自定义标头。

是否需要任何配置才能使入口通过自定义 http 标头?

编辑:

{
  "kind": "Ingress",
  "apiVersion": "extensions/v1beta1",
  "metadata": {
    "name": "myappp-ingress",
    "namespace": "myapp",
    "selfLink": "/apis/extensions/v1beta1/namespaces/myapp/ingresses/myapp-ingress",
    "uid": "...",
    "resourceVersion": "6395683",
    "generation": 4,
    "creationTimestamp": "2018-11-23T13:07:47Z",
    "annotations": {
      "kubernetes.io/ingress.class": "nginx",
      "nginx.ingress.kubernetes.io/allow-headers": "My_Custom_Header", //this doesn't work
      "nginx.ingress.kubernetes.io/proxy-body-size": "8m",
      "nginx.ingress.kubernetes.io/rewrite-target": "/"
    }
  },
  "spec": {
    "tls": [
      {
        "hosts": [
          "myapp.com"
        ],
        "secretName": …
Run Code Online (Sandbox Code Playgroud)

azure kubernetes .net-core azure-aks nginx-ingress

5
推荐指数
1
解决办法
8082
查看次数

生产中缺少标题变量

我正在运行带有PhusionPassenger和NGINX的Rails 3.1.我通过一个简单的HttpClient(OS X的GrahpicalHttpClient)发送请求.我的代码需要标头中的标记和ID来验证调用者的真实性.在开发模式下,这没有问题,但是一旦我将其转移到生产中,标题变量就会丢失.没有显示任何内容.

这是代码:

@caller = Person.check_authentication_token(request.headers['person_id'], request.headers['authentication_token'])
Run Code Online (Sandbox Code Playgroud)

如果任一变量为nil,则check_authentication_token方法返回nil.正如我所说,这在开发中工作得很好但是request.headers ['person_id']和request.headers ['authentication_token']在生产中都是零.有没有人以前见过这个问题?

passenger nginx ruby-on-rails-3

4
推荐指数
1
解决办法
2241
查看次数

Apache 2.4 中所有大写的 HTTP 标头都去掉了下划线

我有一个应用程序依赖于发送全部大写加下划线的 HTTP 标头以及请求。

从Apache 2.4开始,

包含无效字符(包括下划线)的标头现在会被静默删除

此页面建议您可以更改一些设置,以允许不删除旧的 HTTP 标头(即,如果在 CURL 中设置它们,那么它们将显示在 PHP 中的 $_SERVER 数组中),但它没有说如何。我尝试将以下内容添加到我的 HTACCESS 文件中,

SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1 RequestHeader 设置 Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding

但这似乎没有帮助。有其他人在从 Apache 2.2 迁移到 2.4 时经历过这种情况吗?

php apache hosting http http-headers

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

为什么我无法使用add_argument()将HTTP标头发送到Flask-RESTful reqparse模块?

我正在尝试集成Flask-RESTful的请求解析接口,在我的后端reqparse来请求来自客户端的HTTP头.目前,我希望使用它来验证用户并希望传入'secret_key'HTTP标头.

我用于此任务的add_argument()功能是函数.我请求标题的代码如下:

reqparse = reqparse.RequestParser()
reqparse.add_argument('secret_key', type=str, location='headers', required=True)
Run Code Online (Sandbox Code Playgroud)

但是,在发送以下cURL请求时:

curl -H "Content-Type: application/json" -H "{secret_key: SECRET}" -X POST -d '{}' http://localhost:5000/authUser
Run Code Online (Sandbox Code Playgroud)

我在Pycharm社区版编辑器上收到以下400错误:

127.0.0.1 - - [02/Aug/2016 18:48:59] "POST /authUser HTTP/1.1" 400 -
Run Code Online (Sandbox Code Playgroud)

以及我的cURL终端上的以下消息:

{
  "message": {
    "secret_key": "Missing required parameter in the HTTP headers"
  }
}
Run Code Online (Sandbox Code Playgroud)

要在Pycharm上重现此错误(并希望所有其他编译器也是如此),请使用下面编写的文件,如下所示:

Folder - Sample_App
    - __init__.py
    - run.py
    - views.py
Run Code Online (Sandbox Code Playgroud)

__init__.py

from flask import Flask
from flask_restful import Api
from views import AuthUser

app = Flask(__name__)

api …
Run Code Online (Sandbox Code Playgroud)

python api curl http-headers flask-restful

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

request.META不包含标题

我正在使用djangorestframework与以下代码:

class RegistrationView(APIView):
   def post(self, request, format=None):
      print self.request.META.get('API_KEY')
Run Code Online (Sandbox Code Playgroud)

然后它返回None(其他标题,如Content-TypeUser-Agent可以).

但是这个标题肯定存在于请求中(这个键只有local-db,所以可以将它粘贴到这里):

嗅探器

为什么?

django django-rest-framework

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