Часто вам нужно знать IP-адрес того, кто посещает ваш сайт. В то время как ASP.NET имеет несколько способов сделать это, одним из лучших способов, которые мы видели, является использование «HTTP_X_FORWARDED_FOR» коллекции ServerVariables.
Вот почему ...
Иногда ваши посетители находятся за прокси-сервером или маршрутизатором, а стандарт Request.UserHostAddress
фиксирует только IP-адрес прокси-сервера или маршрутизатора. Если это так, тогда IP-адрес пользователя сохраняется в переменной сервера («HTTP_X_FORWARDED_FOR»).
Итак, мы хотим сначала проверить «HTTP_X_FORWARDED_FOR», и если это пусто, мы просто возвращаем ServerVariables("REMOTE_ADDR")
.
Хотя этот метод не является надежным, он может привести к лучшим результатам. Ниже представлен код ASP.NET в VB.NET, взятый из сообщения g0 Джеймс Кроули «Gotcha: HTTP_X_FORWARDED_FOR возвращает несколько IP-адресов»
C #
protected string GetIPAddress()
{
System.Web.HttpContext context = System.Web.HttpContext.Current;
string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipAddress))
{
string[] addresses = ipAddress.Split(',');
if (addresses.Length != 0)
{
return addresses[0];
}
}
return context.Request.ServerVariables["REMOTE_ADDR"];
}
VB.NET
Public Shared Function GetIPAddress() As String
Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
Dim sIPAddress As String = context.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If String.IsNullOrEmpty(sIPAddress) Then
Return context.Request.ServerVariables("REMOTE_ADDR")
Else
Dim ipArray As String() = sIPAddress.Split(New [Char]() {","c})
Return ipArray(0)
End If
End Function
Для любого испытывающего эту проблему, работающую над приложением Django и развертывающуюся к AWS, метод, описанный в этом учебном руководстве, работал на меня: https://realpython.com/deploying-a-django-app-and-postgresql-to-aws-elastic-beanstalk /
Вот является объяснением автора того, когда Вы получаете следующую ошибку:
Error: pg_config executable not found.
проблема состоит в том, что мы пытались установить psycopy2 (Пост-ГРЭС привязка Python), но нам нужны клиентские драйверы Пост-ГРЭС, которые будут установлены также. Так как они не установлены по умолчанию, мы должны установить их сначала.
eb считает пользовательские .config файлы из папки, названной “.ebextensions” на корневом уровне Вашего проекта. Эти .config файлы позволяют Вам устанавливать пакеты, выполнять произвольные команды и/или устанавливать переменные среды. Файлы в каталоге “.ebextensions” должны соответствовать или JSON или синтаксису YAML и выполняются в алфавитном порядке.
первое, что нужно сделать является установкой некоторые пакеты так, чтобы наша команда установки зернышка завершилась успешно. Чтобы сделать это, let’s создает файл, названный .ebextensions/01_packages.config:
packages:
yum:
git: []
postgresql93-devel: []
libjpeg-turbo-devel: []
экземпляры EC2 выполняют Amazon Linux, который является разновидностью Redhat, таким образом, мы можем использовать конфетку для установки пакетов, в которых мы нуждаемся. На данный момент мы просто собираемся установить три пакета - мерзавец, клиент Пост-ГРЭС и libjpeg для Подушки.
На MacOS самое простое желание является к символьной ссылке корректным двоичным файлом, который является в пакете Пост-ГРЭС.
sudo ln -s /Applications/Postgres.app/Contents/Versions/latest/bin/pg_config /usr/local/bin/pg_config
Это довольно безопасно, и все приложения будут в состоянии использовать его в масштабе всей системы при необходимости.
Существует отсутствие ответов для пользователей Windows. Вот то, как я решил эту проблему.
Первый добавляют папку мусорного ведра PostgreSQL в переменную пути как это
set PATH=%PATH%;C:\Program Files\PostgreSQL\11\bin
Замена \11\
с Вашей версией Пост-ГРЭС
следующий запуск
pip install pyscopg2
, это, по крайней мере, получило меня к ошибке компиляции.
Обновление : это надеется быть проблемой с psycopg2 библиотекой и it’s зависимостями, не играющими по правилам с python 3.8. https://github.com/psycopg/psycopg2/issues/990
Я собираюсь оставить это здесь для следующей неудачной души, которая не может обойти эту проблему несмотря на все предоставленные решения. Просто используйте sudo pip3 install psycopg2-binary
Можно установить предварительно скомпилированные двоичные файлы на любой платформе с pip
или conda
:
pip install psycopg2-binary
или
conda install psycopg2
Доводим до вашего сведения, что psycopg2-двоичный-файл pypi страница рекомендует создать из источника в производстве:
двоичный пакет является практическим выбором для разработки и тестирования, но в производстве рекомендуется использовать пакет, созданный из источников