Я пытаюсь вызвать веб-сервис API с javascript, как показано ниже.
var url = "https://...";
let formData = new FormData();
formData.append("...", "...");
formData.append("...", "...");
formData.append("...", "...");
let promise = fetch(url, {
method: "POST",
body: formData
});
promise.then(result => {
console.log(result);
});
Ответ имеет статус 200 ОК, но в тексте ответа говорится, что вы не имеете права делать action.
При расследовании с почтальоном, почему запрос не удался. Я обнаружил, что добавление Referrer Header со значением, являющимся именем домена сервера api, завершило возвращение правильного ответа. Похоже, что на сервере API включен некоторый уровень безопасности реферера, который не разрешает доступ к API по запросу, исходящему от этого сервера.
Чтобы приступить к разработке и тестированию, я установил fiddler с целью перехватить запрос и изменить заголовок реферера перед тем, как отправить запрос на сервер API.
Версия Fiddler: v4.6.20171.26113.
Операционная система: linux debian
Firefox: версия 60.9.0esr (64-разрядная версия)
API, к которому я пытаюсь получить доступ, использует https, поэтому мне нужно расшифровать трафик c. Поэтому я перешел к Fiddler -> Options -> HTTPS -> action и экспортировал сертификат root на рабочий стол. После этого я добавил сертификат в браузер Firefox (Управление сертификатами -> Полномочия-> Импортировать сертификат, извлеченный из фиддлера). Чем я зашел в Fiddler -> Параметры -> HTTPS -> включить расшифровку трафика HTTPS c. Я также настроил ручную настройку прокси-сервера с firefox на go fiddler (proxy: localhost, порт: 8888).
После выполнения вышеуказанной конфигурации мой доступ к Inte rnet пропал. Я искал и увидел, что это проблема с новой версией TLS 1.3. Я переключил firefox версию TLS на версию TLS 1.2 (security.tls.version.max = 3). После этого доступ к inte rnet был восстановлен.
Я установил точку останова в URL api (bpu url). Я могу успешно перехватить и успешно изменить заголовок Referrer, но когда я запускаю до завершения и проверяю ответ в firefox сети, кажется, что Referer не был изменен. Хотя я перехватил с Fiddler и изменил заголовок. Почему изменения, сделанные мною в Fiddler, не сохраняются после того, как я нажимаю «выполнить до завершения»?
С уважением,
Рандо.