Запрос HTTP get не будет отправлен с параметром в кодировке URL - PullRequest
0 голосов
/ 15 мая 2018

В настоящее время я пишу веб-API ASP.NET Core, в котором в качестве параметра используется действие с зашифрованным значением.

Я пытаюсь протестировать это действие, и URL даже не будет отправляться в веб-браузер, сначала я подумал, что это может быть из-за слишком длинного URL, но я нашел этот ответ и мой URL намного ниже предела 2000 символов. Я изменил параметр на тривиальную строку ("привет"), и он передает нормально и запускает код. Я пытался и в Edge, и в IE11 во время отладки моего приложения, в Edge ничего не происходит вообще, в IE11 я получаю сообщение:

Windows не может найти 'http://localhost:5000/api/...' Проверьте орфографию и повторите попытку

В любом случае код в приложении не выполняется (я поставил точку останова в первой строке конструктора контроллеров, который не был достигнут).

Я включил пример одного из URL, который не работает ниже, а также код, который я использую для генерации зашифрованной строки, он использует HttpUtility.UrlEncode для преобразования зашифрованный byte[] массив в строку.

Пример URL (тот, который не работает):

http://localhost:5000/api/testcontroller/doaction/%95%d6%f8%97%84K%1f%d4%40P%f0%8d%de%27%19%ed%ffAR%9c%c6%d4%b1%83%1e%9fX%ce%9b%ca%0e%d4j%d3Rlz%89%19%96%5dL%b1%16%e9V%14u%c7W%ee%89p%3f%f7%e6d%60%13%e5%ca%00%e9%a2%27%cb%d3J%94%a6%e1%b9%9c%914%06y%7e%0bn%ce%00%e5%7d%98b%85c%fa6m%7d%f7%f1%7b8%26%22%5e%1et%5e%10%0c%05%dd%deFAR%bb%93L%b9-W%e1K%82%d8%cc8%ce%e0%0c%2b%bc%19

Действие:

[HttpGet("[action]/{encrypted}")]
public string DoAction(string encrypted)
{
    return "Executed";
}

Создать зашифрованную строку:

private string GenerateEncryptedString()
{
    RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
    byte[] data = HttpUtility.UrlDecodeToBytes("AHMW9GMXQZXYL04EYBIW");
    byte[] encryptedData = rsaProvider.Encrypt(data, true);
    string encryptedString = HttpUtility.UrlEncode(encryptedData);
    return encryptedString;
}

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

1 Ответ

0 голосов
/ 16 мая 2018

Я думаю, вы должны попытаться передать эти данные в строке запроса, а не в расположении ( path ) части URL (некоторые символы могут быть запрещены в путях в качестве уровня безопасности), поэтому добавьте ?data= перед закодированными данными.

http://localhost:5000/api/testcontroller/doaction/?data=%95%d6%f8%97%84K%1f%d4%40P%f0%8d%de%27%19%ed%ffAR%9c%c6%d4%b1%83%1e%9fX%ce%9b%ca%0e%d4j%d3Rlz%89%19%96%5dL%b1%16%e9V%14u%c7W%ee%89p%3f%f7%e6d%60%13%e5%ca%00%e9%a2%27%cb%d3J%94%a6%e1%b9%9c%914%06y%7e%0bn%ce%00%e5%7d%98b%85c%fa6m%7d%f7%f1%7b8%26%22%5e%1et%5e%10%0c%05%dd%deFAR%bb%93L%b9-W%e1K%82%d8%cc8%ce%e0%0c%2b%bc%19

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