2014-01-14 2 views
3

Мне нужно изменить заголовок User-Agent в запросе XHR в моем упакованном приложении. Когда я делаю это, я получаю ошибку:Настройка «небезопасных» заголовков в упакованном приложении XHR

Refused to set unsafe header "User-Agent"

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

Было бы здорово, если бы мне разрешили установить этот заголовок в упакованных приложениях, у которых уже есть доступ к сырцовому сокету.

Возможно, есть некоторые другие API или разрешения, о которых я не знаю? webRequest, похоже, не имеет здесь отношения.

+0

В итоге я закодировал «поддельный» объект XHR с использованием chrome.socket. Это означает, что он не будет работать для HTTPS, так как для chrome.socket все еще нет TLS api. Это не очень общая цель, но вы можете найти ее здесь, если хотите что-то сделать с ней. Https://github.com/kzahel/jstorrent/blob/fresh/js/chromesocketxhr.js – kzahel

+1

Я согласен, что это раздражает, но вы это делаете получить XHR бесплатно с точки зрения разрешений («Не имеет специальных разрешений»), поэтому есть компромисс с точки зрения пользователя. Разрешение XHR, не относящегося к Chrome, в приложении Chrome, вероятно, потребует специального типа приглашения на разрешение, похожее на приглашение API сокета, и это попадает в сложную область UX, что, вероятно, ни для кого не подходит. – sowbug

+1

Я забыл, что разрешения chrome.socket были очень подробными и специфичными для хостов, поэтому, возможно, добавление кода в chrome для обхода «небезопасного заголовка» проверяет, предоставлены ли эти разрешения, добавит, возможно, слишком много сложности. Тем не менее, было бы здорово, если бы это было сделано; и я не думаю, что это должно будет изменить любой существующий UX, если это будет сделано таким образом. – kzahel

ответ

0

Кажется маловероятным, что это будет рассмотрено на платформе Chrome. Поэтому, когда мне нужно больше контролировать свой XMLHttpRequest, я использую свою собственную прокладку, которую я поддерживаю в рамках проекта Web Server for Chrome (github). Вы можете видеть, что он используется в этом example

Смежные вопросы