经过大量的研究和试错,我变得绝望了。
我正在使用JwtAuthentication。我的客户端已经成功发送了Authorization头信息。几周前我没有遇到任何问题,但突然间,我的PHP脚本(因此是JwtAuthentication中间件)无法“看到”Authorization头信息,也无法“看到”我在.htaccess文件中声明的“SetEnv/SetEnvIf”变量。
我询问了服务器上的活动模块(我为托管付费),以查看是否启用了正确的模块,他们给我发送了这个:
- core_module (静态)
- so_module (静态)
- http_module (静态)
- mpm_worker_module (共享)
- cgid_module (共享)
- access_compat_module (共享)
- actions_module (共享)
- alias_module (共享)
- auth_basic_module (共享)
- authn_core_module (共享)
- authn_file_module (共享)
- authz_core_module (共享)
- authz_groupfile_module (共享)
- authz_host_module (共享)
- authz_user_module (共享)
- autoindex_module (共享)
- deflate_module (共享)
- dir_module (共享)
- expires_module (共享)
- filter_module (共享)
- headers_module (共享)
- include_module (共享)
- log_config_module (共享)
- logio_module (共享)
- mime_module (共享)
- negotiation_module (共享)
- proxy_module (共享)
- proxy_fcgi_module (共享)
- proxy_http_module (共享)
- rewrite_module (共享)
- setenvif_module (共享)
- slotmem_shm_module (共享)
- socache_dbm_module (共享)
- socache_shmcb_module (共享)
- status_module (共享)
- suexec_module (共享)
- unique_id_module (共享)
- unixd_module (共享)
- userdir_module (共享)
- ssl_module (共享)
- bwlimited_module (共享)
- security2_module (共享)
- suphp_module (共享)
- hostinglimits_module (共享)
服务器配置如下: cPanel版本58.0(构建34) Apache版本2.4.23 PHP版本5.4.45 MySQL版本5.6.33 架构x86_64 操作系统linux
我已经尝试过:
- 在.htaccess中添加CGIPassAuth on - 修改RewriteCond如下: RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1] - 使用SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1 - 在.htaccess文件上使用WSGIPAssAuthorization On会导致500错误(我不知道为什么) - 在.htaccess上使用CGIPassAuth on没有任何改变。
但是...没有任何作用。我问托管的人有关Apache的更改,但他们告诉我没有什么改变。
还有环境变量...为什么它们不起作用?
我知道有其他相关问题,但不幸的是,他们给出的解决方案无法解决我的问题。
是Apache的问题吗? 还是PHP的问题?
这里他们说可能是防火墙的问题,但如果是那样,环境应该能够工作,不是吗?而且不仅当我想将授权标头设置为变量时会出现问题;我通过SetEnv
或SetEnvIf
设置的任何环境变量都无法在我的PHP脚本中看到。
问题可能是什么?