首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getRequestProperty("Authorization")总是返回null

getRequestProperty("Authorization")总是返回null
EN

Stack Overflow用户
提问于 2010-05-19 16:56:29
回答 4查看 8K关注 0票数 18

我正在尝试读取HTTP请求的authorization标头(因为我需要向其添加一些内容),但标头值总是为null。其他标头工作正常。

代码语言:javascript
复制
public void testAuth() throws MalformedURLException, IOException{
    URLConnection request = new URL("http://google.com").openConnection();
    request.setRequestProperty("Authorization", "MyHeader");
    request.setRequestProperty("Stackoverflow", "anotherHeader");
    // works fine
    assertEquals("anotherHeader", request.getRequestProperty("Stackoverflow"));
    // Auth header returns null
    assertEquals("MyHeader", request.getRequestProperty("Authorization"));
}

我做错了什么吗?这是一个“安全”特性吗?有没有办法让它与URLConnection一起工作,或者我需要使用另一个HTTP客户端库?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-19 20:40:46

显然,这是一个安全“功能”。URLConnection实际上是sun.net.www.protocol.http.HttpURLConnection的一个实例。它将getRequestProperty定义为:

代码语言:javascript
复制
    public String getRequestProperty (String key) {
        // don't return headers containing security sensitive information
        if (key != null) {
            for (int i=0; i < EXCLUDE_HEADERS.length; i++) {
                if (key.equalsIgnoreCase(EXCLUDE_HEADERS[i])) {
                    return null;
                }
            }
        }
        return requests.findValue(key);
    }

EXCLUDE_HEADERS数组的定义如下:

代码语言:javascript
复制
   // the following http request headers should NOT have their values
   // returned for security reasons.
   private static final String[] EXCLUDE_HEADERS = {
           "Proxy-Authorization",
           "Authorization"
   };
票数 29
EN

Stack Overflow用户

发布于 2010-05-19 17:22:29

我对额外的依赖项并不满意,但是遵循suggestion to switch to Commons Http为我解决了直接的问题。

我仍然想知道我的原始代码有什么问题。

票数 0
EN

Stack Overflow用户

发布于 2021-10-13 21:50:38

正如Devon's answer所说的那样:这不是一个bug,而是一个“安全”特性

但是您不必切换到不同的库:始终可以通过反射访问底层的授权-collection并提取“-header”Authorization值。

经过一些头疼之后,我终于想出了一个可以工作的snippet here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2864062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档