Теперь я столкнулся с непонятной проблемой с отправкой HTTP-запроса из расширения Chrome, которое я разрабатываю (обычный JavaScript). Это запрос POST с XmlHttpRequest (от background.js
) с URL-адресом вроде:
http://host.com/postform/upload
Я также отправляю этот запрос с обычной веб-страницы (не chrome extension), а важный бит заключается в том, что если я открою Инструменты для разработчиков и проведу вкладку "Сеть" для моего запроса (выбор заголовка raw), я вижу первый заголовок:
POST /postform/upload HTTP/1.1
И он отлично работает, прежде чем я включу прокси вместо прямого соединения. Для этого я использую squid3 на своем Ubuntu. Только одна вещь отличается между запросами при использовании прокси-сервера и возвращает HTTP-сервер 404 - только при использовании прокси-сервера.
Когда я заставляю Chrome работать с моим прокси-сервером на основе squid3 (я использую PAC script для этого в моем расширении chrome), мой запрос не будет работать. Я проверил много раз и сделал все, что мог, чтобы уменьшить разницу в теле запроса, и все, что я сейчас оставил, - это первый заголовок.
Это выглядит так, когда запрос, отправленный с активным прокси (на вкладке "Сеть" в разделе "Инструменты разработчика", открыта со справочной страницы):
POST http://host.com/postform/upload HTTP/1.1
Я пробовал использовать chome.webRequest.onBeforeSendHeaders API, но это не помогло. Я также попытался удалить имя хоста из URL-адреса в XmlHttpRequest.open, но это не помогло.
Да, я отправляю правильные заголовки Host и Origin в любом случае. Может ли это быть проблемой в моей конфигурации squid3 или что я должен изменить в своем javaScript?
UPDATE Понятно, что кальмар не является проблемой, и проблема заключается в том, что запрос POST содержит FULL uri (http://...) Вместо этого "пути". GET работает отлично. Это убивает меня.
Я не могу использовать обходные пути iframe
. Какая у меня проблема?