Сервер удаляет настраиваемые поля заголовка HTTP - PullRequest
7 голосов
/ 17 января 2011

Я пытался получить HTTP-запросы с настраиваемыми полями в заголовках, но, похоже, мой сервер удаляет их ...

Это запрос, который я отправляю на сервер (я читал, чтозапрос с HTTP-прокси):

POST /oauth.php/request_token HTTP/1.1
Host: domain.com
User-Agent: DearStranger/1.0 CFNetwork/485.12.7 Darwin/10.6.0
Authorization: OAuth realm="", oauth_consumer_key="ebb942f0d260b06cb533c6133c28408004d343197", oauth_signature_method="HMAC-SHA1", oauth_signature="qPBFAa8XRRbor2%2F%2FQXv6kU3%2F7jU%3D", oauth_timestamp="1295278460", oauth_nonce="E7D6AC76-74CE-4951-8182-7EBF9B382E7E", oauth_version="1.0"
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Pragma: no-cache
Content-Length: 0
Connection: keep-alive
Proxy-Connection: keep-alive

Я напечатал заголовки запроса, когда прибыл на страницу page.php.Я вижу, что:

uri http://domain.com/oauth.php/request_token
parameters 
headers Array
.... Accept : */*
.... Accept-Encoding : gzip, deflate
.... Accept-Language : en-us
.... Connection : keep-alive
.... Host : domain.com
.... User-Agent : DearStranger/1.0 CFNetwork/485.12.7 Darwin/10.6.0
method POST

, когда я должен это видеть (он работает на локальной версии)

uri http://localhost:8888/oauth.php/request_token
parameters 
headers Array
.... Accept : */*
.... Accept-Encoding : gzip, deflate
.... Accept-Language : en-us
.... Authorization : OAuth realm="", oauth_consumer_key="582d95bd45d455fa2e5819f88fc0c5a104d2c7ff3", oauth_signature_method="HMAC-SHA1", oauth_signature="agPSFdtlGxXv2sbrz3pRjHlROOE%3D", oauth_timestamp="1295272680", oauth_nonce="667A133C-5071-48AB-9F13-8146425E46B7", oauth_version="1.0"
.... Connection : keep-alive
.... Content-Length : 0
.... Host : localhost:8888
.... User-Agent : DearStranger/1.0 CFNetwork/485.12.7 Darwin/10.6.0
method POST

Я использую php 5.2.17 на сервере.

У вас есть идея, чтобы помочь мне решить эту проблему?

Спасибо!

Ответы [ 3 ]

8 голосов
/ 03 июля 2013

На самом деле, это довольно легко исправить. Вина лежит на fastcgi. Вы можете просто предоставить файл .htaccess с правилом перезаписи, чтобы сохранить заголовок.

<IfModule mod_rewrite.c>

...

# Pass Authorization headers to an environment variable
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

</IfModule>

Кредит идет сюда: https://drupal.org/node/1365168

Они также говорят о еще более простом решении, позволяющем проходить этим заголовкам, если вы используете виртуальный хост.

6 голосов
/ 03 февраля 2011

Apache удаляет заголовок Authentication, потому что это риск для безопасности при использовании с CGI.Используете ли вы PHP через CGI?

Я думаю, что PHP в некоторых случаях также лишает аутентификации.Опять же, есть риск, что раскрытие его сценариями позволит коду одного пользователя прослушивать других пользователей на одном сервере (например, если у Алисы и Боба есть учетные записи).

1 голос
/ 17 января 2011

Пожалуйста, включите фактические названия заголовков, которые вырезаются.Этот вопрос в его нынешнем виде бесполезен, заставляя нас догадываться ...

Проверяли ли вы с Firebug / HTTPFox, что ваш браузер действительно отправляет эти заголовки?Если вы специально не настроили сервер для очистки заголовков, он будет проходить через любые пользовательские как есть.

Заголовок авторизации, куда отправляются данные OAuth, будет отправлен ТОЛЬКОклиентом в ответ на запрос 401 «требуется авторизация» на стороне сервера.Если вы не добавили серверную конфигурацию «должен иметь пароль для входа», клиент не будет отправлять информацию об аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...