php服务器响应http请求,php-HTTP请求标头可被本地服务器识别,但不能被在线服务器识别...

我制作了一个简单的PHP应用程序,提供了RESTful API,用于注册,登录和更新用户的地理位置.我在本地Apache服务器上使用MySQL数据库进行了测试,一切都很好.

最近,我将PHP代码迁移到了在线主机HostGator.当涉及识别HTTP请求标头时,我的部分代码停止工作.像这样:

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36

Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo

Authorization: f0cc696e44f76f9638331b5487f4b01d

Content-Type: application/x-www-form-urlencoded

Accept: */*

DNT: 1

Accept-Encoding: gzip, deflate, sdch

Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4

我编写了PHP代码,以便它读取标头Authorization下的api-key.在我的本地服务器上运行正常,但报告在HostGator上迁移相同代码时缺少api键

我怀疑某些设置在我的本地环境中是默认设置,但需要在HostGator中明确设置.这是我当前的.htaccess:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$%{ENV:BASE}index.php [QSA,L]

AddType application/x-httpd-php54 .php

我将XAMPP用于本地服务器和数据库,并将Chrome扩展Advanced Rest Client用于发送HTTP请求.

编辑:我的代码来检索标头值:

$headers = apache_request_headers();

if (isset($headers['Authorization'])) {

$api_key = $headers['Authorization'];

// validating api key

// ...

} else {

// api key is missing in header

// ...

}

解决方法:

因此,您需要使用实际的自定义标头.

而不是使用授权字段将密钥发送为

X-Apikey: this_is_my_magic_key_that_put_in_the_header

然后将其检索为

$headers['X-Apikey'];

Apache不会丢弃它.

注意:标题将在新单词上显示CamelCased.发送“ X-API-KEY”成为“ X-Api-Key”,因此请使用上面的格式来正确检索它.

标签:rest,apache,hosting,php,htaccess

来源: https://codeday.me/bug/20191120/2046536.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值