Порт 9553 (из Firebase), заблокированный веб-хостом, не может найти способ успешно использовать cURL через альтернативный порт

Я использую PHP и cURL с REST API, и хотя я могу cURL начальную конечную точку Nest Developer API, как только она перенаправляется на URL-адрес Firebase, она проходит через порт 9553, который мой веб-хост заблокировал (нет шансов открыться) . Время ожидания соединения истекает и выдает ошибку «не удалось подключиться к хосту».

Мой код работает нормально, я могу без проблем запустить его на своем локальном сервере.

Я новичок в использовании cURL, какие у меня есть варианты? Мне кажется, что проблема в порте, на котором настаивает Firebase. Я могу cURL указать несколько разных мест, более: 80 и: 443 без проблем, но не URL-адрес Firebase. Нужно ли будет запускать прокси для доступа к данным?

Или это можно решить с помощью библиотеки PHP Firebase? Я не очень заинтересован в его использовании, если мне это не нужно, cURL прекрасно справится с этой задачей, и я действительно не знаю, как это работает.


person joshguerette    schedule 26.07.2014    source источник
comment
Это проблема и для меня, так как многие корпоративные пользователи находятся за брандмауэрами, которые блокируют этот порт.   -  person Richard Ev    schedule 13.02.2016


Ответы (2)


Невозможно обойти перенаправления с помощью REST, они указывают на определенные порты и хосты в облаке Nest.

Что не так с клиентом Firebase Web Sockets? Он более производительный, чем REST.

person David W. Keith    schedule 27.07.2014
comment
В них нет ничего плохого, просто у меня нет опыта использования библиотек PHP. Я просмотрел документацию, но не знаю, с чего начать. Как подключить Nest API к приложению Firebase или они уже подключены? - person joshguerette; 27.07.2014

joshguerette, Ваш брандмауэр блокирует этот порт?

Вы можете открыть порт из своего кода С# следующим образом:

using Microsoft.TeamFoundation.Common;
private void AddPortToFirewall(int portNumber, string name) 
{
    INetFwMgr icfMgr = null;
    try
    {
        Type TicfMgr = Type.GetTypeFromProgID("HNetCfg.FwMgr");
        icfMgr = (INetFwMgr)Activator.CreateInstance(TicfMgr);
    }
    catch (Exception ex)
    {
        Debug.WriteLine("Failed in AddPortToFirewall.Activator " + portNumber.ToString() + " " + name + " " + ex.ToString());
        return;
    }

    try
    {
        INetFwProfile profile;
        INetFwOpenPort portClass;
        Type TportClass = Type.GetTypeFromProgID("HNetCfg.FWOpenPort");
        portClass = (INetFwOpenPort)Activator.CreateInstance(TportClass);

        // Get the current profile
        profile = icfMgr.LocalPolicy.CurrentProfile;

        // Set firewall enabled
        if (!profile.FirewallEnabled)
            profile.FirewallEnabled = true;

        // Set the port properties
        portClass.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
        portClass.Enabled = true;
        portClass.Name = name;
        portClass.Port = portNumber;
        portClass.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;

        // Add the port to the ICF Permissions List
        bool portExisted = false;
        foreach (INetFwOpenPort p in profile.GloballyOpenPorts)
        {
            if (p.Port == portNumber && p.Name == name)
            {
                portExisted = true;
                Debug.WriteLine("Windows Firewall inbound list:" + p.Port + " " + p.Name);
                break;
            }
        }

        if (!portExisted)
        {
            profile.GloballyOpenPorts.Add(portClass);
            Debug.WriteLine("ServicePort " + portNumber.ToString() + " " + name + " was added into Windows Firewall inbound list.");
        }
        else
        {
            Debug.WriteLine("ServicePort " + portNumber.ToString() + " " + name + " has already in Windows Firewall inbound list.");
        }

    }
    catch (Exception ex)
    {
        Debug.WriteLine("Failed in AddPortToFirewall " + portNumber.ToString() + " " + name + " " + ex.ToString());
    }
}
person Kim Gregory    schedule 28.07.2014
comment
Я на виртуальном хостинге, поэтому у меня нет доступа к брандмауэру. Кроме того, мое приложение - PHP. - person joshguerette; 30.07.2014