Ich benutze Jetty eingebettet 9.3.8.v20160314 von Scala (Scala ist hier nebensächlich, das ist eine reine Jetty Frage ist), wie diese konfiguriert:So entfernen Sie den abschließenden Schrägstrich von eingebetteten Jetty-URLs?
val loginService = new RepoLoginService(usersRepository, signInsRepo)
val server = new Server(8080)
server.addBean(loginService)
val security = new ConstraintSecurityHandler()
server.setHandler(security)
val constraint = new Constraint()
constraint.setName("auth")
constraint.setAuthenticate(true)
constraint.setRoles(Array[String]("user", "admin"))
val mapping = new ConstraintMapping()
mapping.setPathSpec("/*")
mapping.setConstraint(constraint)
security.setConstraintMappings(Collections.singletonList(mapping))
security.setAuthenticator(new BasicAuthenticator())
security.setLoginService(loginService)
val mapper = prepareJacksonObjectMapper
val listAccountsController = new ContextHandler("/api/accounts")
listAccountsController.setHandler(new ListAccountsController(mapper, accountsRepository))
val importBankAccountsController = new ContextHandler("/api/bank-account-transactions/import")
importBankAccountsController.setHandler(new ImportBankAccountTransactionsController(mapper, bankAccountTransactionsRepo))
val contexts = new ContextHandlerCollection()
contexts.setHandlers(Array(listAccountsController, importBankAccountsController))
security.setHandler(contexts)
server.start()
server.join()
Hinweis den Kontext für die listAccountsController
: /api/accounts
. Wenn ich /api/accounts
kräuseln, erhalte ich eine Umleitung zu /api/accounts/
(beachten Sie den Schrägstrich):
$ curl --silent --verbose --user francois:francois http://localhost:8080/api/accounts
* Trying ::1...
* Connected to localhost (::1) port 8080 (#0)
* Server auth using Basic with user 'francois'
> GET /api/accounts HTTP/1.1
> Host: localhost:8080
> Authorization: Basic ZnJhbmNvaXM6ZnJhbmNvaXM=
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Date: Sun, 22 May 2016 03:54:44 GMT
< Location: http://localhost:8080/api/accounts/
< Content-Length: 0
< Server: Jetty(9.3.8.v20160314)
<
* Connection #0 to host localhost left intact
Ich habe versucht, einen Anruf zu clearAliasChecks()
hinzufügen, was ich bin nicht sicher, auch im Zusammenhang mit dieser ist. Ich habe auch versucht, mapping.setPathSpec("/*")
zu mapping.setPathSpec("/")
zu ändern, weil ich eine answer on Tomcat not adding the trailing slash gelesen habe, aber das gilt wahrscheinlich nicht für mich sowieso.
Was muss ich ändern, um den Schrägstrich zu vermeiden?
Das ist nicht OPs Frage nicht beantworten. Er wollte wissen, wie man das schafft. Ich auch, aus verschiedenen Gründen. – kevr
@kevr Die Antwort ist, sich nicht auf den Kontextstamm zu verlassen, um dieses Ziel zu erreichen. Behalte den Kontextstamm bei "/" und deine Implementierungen können tun, was immer sie wollen. –