Cross-origin xhr de um script de usuário no Google Chrome
-
20-09-2019 - |
Pergunta
Alguém teve alguma sorte executando XHRs cruzados de um script de usuário no Google Chrome? Os pedidos vão para o servidor (eu posso vê -los nos logs), mas o readystatechanged
evento nunca é demitido.
As permissões de extensão não parecem estar fazendo o truque. Nem Jsonp.
Solução
As versões atuais do Chrome (13.0.781 ou mais tarde) agora suportam a maioria ou todos os GM_xmlhttpRequest()
Doc funcionalidade - incluindo solicitações de domínio cruzado.
Ver Edição 18857: Suporte xmlHttPrequest em scripts de conteúdo.
Portanto, este script funciona perfeitamente bem agora no Chrome (e no Firefox, é claro):
// ==UserScript==
// @name _Cross domain (XSS) GM_xmlhttpRequest, Chrome too
// @include http://stackoverflow.com/*
// @grant GM_xmlhttpRequest
// ==/UserScript==
GM_xmlhttpRequest ( {
method: "GET",
url: "http://www.google.com/",
onload: function (response) {
console.log ( response.status,
response.responseText.substring (0, 80)
);
}
} );
(Instale esse script e navegue em qualquer página. O script escreverá os primeiros 80 caracteres da página inicial do Google no console.)
Outras dicas
A partir do Chrome 13, você pode fazer solicitações cruzadas de origem nos scripts de conteúdo se você incluísse a permissão para o site no manifesto.
Um script de usuário no Chrome é um script de conteúdo. Os scripts de conteúdo não podem fazer XHRs de origem cruzada. Se você deseja fazer XHRs de origem cruzada, isso deve ser feito nas páginas de extensão (plano de fundo, pop-up, opções).
Para mais informações:http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html