Задать вопрос
@samael228

Почему я не могу передавать файлы если обращаюсь к серверу aps.net по бубличному IP?

Я получил заказ от отца, который хочет создать сайт с играми который он проверил, чтобы его дети могли только на него заходить. Идея в том, чтобы перенаправлять запросы с этого сайта на другой, где игры уже размещены. Однако у меня возникла проблема: когда я пытаюсь обратиться к своему ASP.NET серверу через публичный IP (домен или IP сервера), игры не загружаются. А если использовать локальный IP, то все работает без проблем. Я не совсем понимаю, как это работает, ведь IP-адреса разные, а сервер один и тот же. У меня есть код (который я собираюсь переделать), я просто набросал его за 5 минут, чтобы проверить, будет ли он работать с играми от Яндекса.

public class ProxyController : Controller
{
    static string DecompressGZip(byte[] compressedData)
    {
        using (var compressedStream = new MemoryStream(compressedData))
        using (var decompressionStream = new GZipStream(compressedStream, CompressionMode.Decompress))
        using (var resultStream = new MemoryStream())
        {
            decompressionStream.CopyTo(resultStream);
            return Encoding.UTF8.GetString(resultStream.ToArray());
        }
    }
    public IActionResult Index(string path)
    {
        HttpClient httpClient = new HttpClient();

        string url = string.Empty;
        
        if (path == "sdk.js")
        {
            url = "https://app-362399.games.s3.yandex.net/" + path;
        }
        else
        {
            url = "https://app-362399.games.s3.yandex.net/362399/g7dwevd9rso4umvjdg6wcuuno719p8fz/" + path;
            
            if (path == "index.html")
            {
                url += "?lang=ru&sdk=%2Fsdk%2F_%2Fv2.aad3c6478979ba247ee7.js";

                var respo2 = httpClient.GetAsync(url).Result;

                Response.StatusCode = (int)respo2.StatusCode;

                var content2 = respo2.Content.ReadAsByteArrayAsync().Result;

                var html = DecompressGZip(content2);

                return Content(html, "text/html");
            }
        }

        var respo =  httpClient.GetAsync(url).Result;

        foreach (var item in respo.Content.Headers)
        {
            Response.Headers.Add(item.Key, new Microsoft.Extensions.Primitives.StringValues(item.Value.ToArray())); 
        }

        Response.StatusCode = (int)respo.StatusCode;

        var content = respo.Content.ReadAsByteArrayAsync().Result;

      
        return File(content, respo.Content.Headers.ContentType?.ToString() ?? "application/json");
    }
}

Это такая защита у Яндекса?
67af0d0da6ef0644684431.png
67af0d1d7d99f965666205.png
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы