当前位置: 首页 > 知识库问答 >
问题:

将http头“用户代理”添加到http连接请求

松国兴
2023-03-14

先决条件

  • Apache Tomcat 7
  • Spring3.2.11。释放
  • Apache Camel 2.14.1
  • Camel HTTP4endpoint(Camel-HTTP4)

问题

我尝试通过http4组件调用https加密站点。位于我的服务器和Internet(目标服务器)之间的代理检查标头“User-Agent”并在请求为空时拒绝请求。

连接请求不包含http标头“User Agent”。

在org.apache.http.impl.execchain.MainClientExec在方法私有布尔createTunnelToTarget(AuthState proxyAuthState, HttpClientConnection Management edConn, HttpRoute路由, HttpRequest请求, HttpClientContext上下文)中抛出HttpException, IOException以下被调用:

    BasicHttpRequest connect = new BasicHttpRequest("CONNECT", authority, request.getProtocolVersion());
    this.requestExecutor.preProcess(connect, this.proxyHttpProcessor, context);

。请求执行人。预处理将头“主机”和“代理连接”添加到HTTP连接请求,但不添加“用户代理”。

如何将标头“用户代理”添加到HTTP CONNECT请求?

当做

麦克斯


共有1个答案

郭德惠
2023-03-14

这个问题在httpclient 4.4.1中得到了解决。

在HttpClientBuilderorg.apache.http.impl.client.类中,http处理器使用HttpRequest estInterceptor for User-Agent初始化:

    ClientExecChain execChain = createMainExec(
            requestExecCopy,
            connManagerCopy,
            reuseStrategyCopy,
            keepAliveStrategyCopy,
            new ImmutableHttpProcessor(new RequestTargetHost(), new RequestUserAgent(userAgentCopy)),
            targetAuthStrategyCopy,
            proxyAuthStrategyCopy,
            userTokenHandlerCopy);

解决方案是将httpclient版本从4.3.3更新到4.4.1。在maven中,我必须定义依赖项,以便不选择camel使用的verson。

 类似资料:
  • 问题内容: 我已经开发了一个Restfull应用程序,我想添加另一个Web应用程序来使用其服务,因此我进行了以下Ajax调用: 我得到这个例外: 对象{readyState:0,状态:0,statusText:“ SyntaxError:无法执行’setRequestHeader’…-Origin: ‘不是有效的HTTP标头字段名称。”}错误DOMException:无法在’XMLHttpRequ

  • 问题内容: 我正在使用Axis API访问Axis HTTP服务器。该API的文档可在此处找到。 我正在使用以下代码将处理程序添加到服务器。类型为java.xml.rpc.Service 我知道服务名称是正确的,因为我在随后对服务对象的调用中获得了正确的输出。 处理程序没有以某种方式被调用。这是Handler类。我的意图是在 将请求 转发到服务器之前 向HTTP请求添加自定义标头 。 上面的代码有

  • 问题内容: 这是我的第一篇文章。 我刚刚开始学习Go和Angular,并且尝试将angular应用程序连接到go api。我已经写了这两本书,并且一直坚持找出问题的根源。我以为这是一个CORS问题,但是如果我在Angular http请求中不包含代码的标题行,它就可以正常工作。在这一点上,我只是想添加标题。授权代码尚未实现。 这两个应用程序都在本地运行,端口5000上的Go应用程序和4200端口上

  • 问题内容: 我有一个角度应用程序,需要将其重定向到外部非角度html页面,所以我认为我可以使用将该角度应用程序重定向到我的外部站点。这实际上工作正常,但是,我有一个nodejs / express后端,在提供任何内容(甚至静态内容)之前检查auth令牌。 这要求在http请求的标头中发送身份验证令牌。现在的问题是: 可以/如何在发送前更改更改后的请求中添加身份验证令牌? 问题答案: 使用浏览器时,

  • 我正在编写一个mdp文件,并且我正在寻找一种方法来指定(或修改)客户端为特定演示文稿所做的所有请求的HTTP标头。我想在超文本传输协议请求中添加一个授权字段。我希望在不编辑客户端sw的情况下这样做。 我已经阅读了ISO/IEC 23009-1,但我没有发现任何关于它的信息。有人知道怎么做吗?

  • 问题内容: 澄清点:将自定义标头添加到我的jQuery ajax调用中没有任何问题,我想将我的自定义标头自动添加到所有ajax调用中。 如果您看看jquery $.ajax自定义http标头问题(不是我的问题),您将看到一个很好的示例,说明如何为每个ajax调用手动实现代码。 我想为所有jQuery ajax调用覆盖beforeSend。根据jQuery文档,我可以使用jQuery.ajaxSet