Почему мой локальный сервер GET сервер-сервер завершается с ошибкой HTTP 405, в то время как тот же GET браузер-сервер успешно выполняется? - PullRequest
0 голосов
/ 16 октября 2018

У меня есть Java-сервер (работает на localhost: 8080), который вызывает службу Red Hat Single Sign-On (RH-SSO) (работает на localhost: 8180).Сервер вызывает службу следующим образом:

// HttpRequest, HttpResponse are merely custom data collections.
// They have nothing in common with HttpServletRequest or HttpServletResponse.
private HttpResponse processURLRequest(HttpRequest request) {
    HttpResponse response;

    if(request.getURL() == null) {
        return new HttpResponse(request.getErrorText());
    }

    try {
        HttpURLConnection con = (HttpURLConnection) request.getURL().openConnection();
        //con.setInstanceFollowRedirects(true);  // jpm
        con.setRequestMethod(request.getMethod());
        applyHeadersToConnection(con, request.getHeaders());
        applyCookiesToConnection(con, request.createMultiValueCookies());
        applyDoOutput(con, request.getMethod());
        applyBodyLinesToConnection(con, request.getBodyLines());

        response = new HttpResponse(con);
    } catch(Exception e) {
        response = new HttpResponse(e.toString());
    }

    return response;
}

Я регистрирую запрос, выполняю вызов processURLRequest (), затем записываю ответ.Вот запрос.

HttpRequest: 
url: http://localhost:8180/auth/realms/mycompany/protocol/saml/clients/vanillin/
method: GET

header[0], name: Accept, values: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8, 
header[1], name: Cache-Control, values: max-age=0, 
header[2], name: Upgrade-Insecure-Requests, values: 1, 
header[3], name: User-Agent, values: Mozilla/5.0, 
header[4], name: Connection, values: keep-alive, 
header[5], name: Accept-Language, values: en-US,en;q=0.9, 
header[6], name: Accept-Encoding, values: gzip, deflate, br, 

Вот ответ:

HttpResponse: 
url: http://localhost:8180/auth/realms/mycompany/protocol/saml/clients/vanillin/
status: 405

header[0], name: null, values: HTTP/1.1 405 Method Not Allowed, 
header[1], name: Connection, values: keep-alive, 
header[2], name: Content-Length, values: 1968, 
header[3], name: Date, values: Mon, 15 Oct 2018 20:26:51 GMT, 
header[4], name: Content-Type, values: text/html;charset=utf-8, 

Но, если я получу доступ к этому URL-адресу непосредственно из браузера, у меня получится.Из Chrome Network Viewer:

General:
Request URL: http://localhost:8180/auth/realms/mycompany/protocol/saml/clients/vanillin/
Request Method: GET
Status Code: 200 OK
Remote Address: 127.0.0.1:8180
Referrer Policy: no-referrer-when-downgrade

Response headers:
HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, max-age=0
Set-Cookie: AUTH_SESSION_ID=794d5610-013b-443e-9c0e-a5711db0e557.w2119; Version=1; Path=/auth/realms/mycompany; HttpOnly
Set-Cookie: KC_RESTART=eyJhbGciOiJIUzI1NiIsImtpZCIgOiAiMGNiNzM1ZTctMzUyZi00ZTExLWE0MmYtODMzYmYxNDczYzJhIn0.eyJjaWQiOiJ2YW5pbGxhIiwicHR5Ijoic2FtbCIsInJ1cmkiOiJodHRwOi8vbG9jYWxob3N0OjgwODAvdmFuaWxsYSIsImFjdCI6IkFVVEhFTlRJQ0FURSIsIm5vdGVzIjp7InNhbWxfaWRwX2luaXRpYXRlZF9sb2dpbiI6InRydWUiLCJzYW1sX2JpbmRpbmciOiJwb3N0In19.YZXJhzAzYXQ8LhN-glmOCg0haMfKn_aIKHxbwqP88hk; Version=1; Path=/auth/realms/mycompany; HttpOnly
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-src 'self'; frame-ancestors 'self'; object-src 'none';
Date: Mon, 15 Oct 2018 19:41:04 GMT
Connection: keep-alive
X-Robots-Tag: none
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
Content-Type: text/html;charset=utf-8
Content-Length: 3802
Content-Language: en

Request headers:
GET /auth/realms/mycompany/protocol/saml/clients/vanillin/ HTTP/1.1
Host: localhost:8180
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: whoson=284-1539632437172
  • Мой запрашивающий сервлет Java работает в JBoss 7 EAP с использованием среды Java 1.8.

  • Хост, который принимает запрос браузера, но отклоняет запрос JBoss, выполняет Red Hat Single Sign-On (RH-SSO) 7.2, используя среду Java 1.8.

  • Область / клиент RH-SSO настроена для аутентификации SAML (не OIDC).

Заранее спасибо, Джером.

ОБНОВЛЕНИЕ

Я пробовал проблему с моим сервером с другими адресатами.

До сих пор для меня загадка.

Джером.

...