Расширение Chrome: как изменить источник в заголовке запроса AJAX?

Я пытаюсь вручную установить источник в заголовке запроса ajax. В моем background.js у меня есть это

var ajaxResponse;
$.ajax({
    type:'POST',
    url:'www.somewebsite.com/login/login.asp',
    headers:{
            'origin': 'https://www.somewebsite.com'
    },
    success: function(response){
        ajaxResponse = response;
    }
});

Как видите, происхождение изменено. Но когда это расширение Chrome выполняется, источник переопределяется на chrome-extension://iphajdjhoofhlpldiilkujgommcolacc, а консоль выдает ошибку "Отказано в установке небезопасного заголовка "источник""

Я следил за Chrome API (http://developer.chrome.com/extensions/xhr.html), и уже установил разрешение следующим образом

"permissions": [
     "https://www.somewebsite.com/*"
 ],

Кто-нибудь знает, как правильно установить происхождение в заголовке? Спасибо!


person Maria    schedule 01.01.2014    source источник
comment
Вы не можете. Почему вы пытаетесь изменить происхождение?   -  person abraham    schedule 01.01.2014
comment
@abraham, мы должны быть в состоянии. В Chrome Extension API говорится: «Обычные веб-страницы могут использовать объект XMLHttpRequest для отправки и получения данных с удаленных серверов, но они ограничены одной и той же политикой происхождения. Расширения не так ограничены. Расширение может взаимодействовать с удаленными серверами за пределами своего источника, если оно сначала запрашивает разрешения между источниками». (developer.chrome.com/extensions/xhr.html)   -  person Maria    schedule 01.01.2014
comment
Это правильно, что расширения не ограничены перекрестным происхождением, но вы не делаете этого, изменяя происхождение. Вы просто делаете запрос XHR, и Chrome не будет его блокировать.   -  person abraham    schedule 01.01.2014


Ответы (1)


Вероятно, вы неверно истолковали документацию:
расширение может запрашивать доступ к удаленным серверам за пределами своего источника

Это означает, что расширение может отправить запрос на удаленные серверы (т.е. сам браузер не будет блокировать запрос, как это произошло бы с JS обычной веб-страницы).
Это не означает, что расширению будет разрешено отправлять произвольные заголовки вместе с запросом, а удаленный сервер не ответит на запрос.


Таким образом, если удаленный сервер требует определенного значения для заголовка Origin, вы ничего не можете сделать, поскольку согласно спецификации вам не разрешено устанавливать заголовок Origin (и это ограничение также распространяется на расширения).

person gkalpak    schedule 01.01.2014
comment
Можно ли использовать какие-то прокси-серверы, например curl, burp suite и т. д., чтобы изменить заголовок Origin? Где-то читал о такой возможности. - person anwith.ct; 06.01.2014
comment
Конечно. Вы можете использовать несколько серверных библиотек для достижения желаемого (но вам нужен сервер (или служба, которая предлагает эту функциональность)). - person gkalpak; 06.01.2014