Slim Framework 3 401 响应无法设置 WWW-Authenticate header
Slim Framework 3 401 response can't set WWW-Authenticate header
有一个使用 Slim Framework v3 的 REST 应用程序。一切都按预期工作,但我似乎无法为响应设置 headers。
例如:
$app->any('/[{path:.*}]', function(Request $request, Response $response, $args = null ) use ( $objError, $objDBCon, $objUtil ) {
...
return $response->withAddedHeader( 'WWW-Authenticate', 'API-key realm="restricted"' )
->withJson($apiResults, $httpcode);
});
在获取数据、获取正确的 http 状态代码等方面按预期工作。
例如我得到了正确的响应JSON
{ "message": "You must be logged in to access this resource" }
我得到了预期的状态代码:
Request Method:GET
Status Code:401 Unauthorized
和所有标准,正确headers,content-type,等等
但似乎无法设置任何额外的 headers。
参考文档https://www.slimframework.com/docs/objects/response.html
我的声望太低要添加评论:
根据手册
withAddedHeader method appends the new value to the set of values that already exist for the same header name
您的 header 在追加之前是否已经存在?
我通常会为每个回复创建一个新的 header,像这样:
return $response = $next($request, $response)
->withHeader('Access-Control-Allow-Origin', $this->allowedhosts)
->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->withStatus(200);
希望这对您有所帮助。
有一个使用 Slim Framework v3 的 REST 应用程序。一切都按预期工作,但我似乎无法为响应设置 headers。
例如:
$app->any('/[{path:.*}]', function(Request $request, Response $response, $args = null ) use ( $objError, $objDBCon, $objUtil ) {
...
return $response->withAddedHeader( 'WWW-Authenticate', 'API-key realm="restricted"' )
->withJson($apiResults, $httpcode);
});
在获取数据、获取正确的 http 状态代码等方面按预期工作。
例如我得到了正确的响应JSON
{ "message": "You must be logged in to access this resource" }
我得到了预期的状态代码:
Request Method:GET
Status Code:401 Unauthorized
和所有标准,正确headers,content-type,等等
但似乎无法设置任何额外的 headers。
参考文档https://www.slimframework.com/docs/objects/response.html
我的声望太低要添加评论:
根据手册
withAddedHeader method appends the new value to the set of values that already exist for the same header name
您的 header 在追加之前是否已经存在?
我通常会为每个回复创建一个新的 header,像这样:
return $response = $next($request, $response)
->withHeader('Access-Control-Allow-Origin', $this->allowedhosts)
->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->withStatus(200);
希望这对您有所帮助。