Estou tentando obter o feed de um site de notícias. Pensei em usar a API de feed do Google para converter o feed do feedburner em json. O seguinte url retornará 10 postagens do feed, no formato json. http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http://feeds.feedburner.com/mathrubhumi
Usei o seguinte código para obter o conteúdo do url acima
$.ajax({
type: "GET",
dataType: "jsonp",
url: "http://ajax.googleapis.com/ajax/services/feed/load",
data: {
"v": "1.0",
"num": "10",
"q": "http://feeds.feedburner.com/mathrubhumi"
},
success: function(result) {
//.....
}
});
mas não está funcionando e estou recebendo o seguinte erro
XMLHttpRequest não pode carregar http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http%3A%2F%2Ffeeds.feedburner.com%2Fmathrubhumi . Nenhum cabeçalho 'Access-Control-Allow-Origin' está presente no recurso solicitado. Portanto, o acesso de origem ' http: // localhost ' não é permitido.
Como faço para corrigir isso?
Respostas:
Acredito que provavelmente seja porque o Chrome não suporta
localhost
oAccess-Control-Allow-Origin
- veja o problema do ChromePara que o Chrome envie
Access-Control-Allow-Origin
o cabeçalho, basta criar um alias de seu host local no arquivo / etc / hosts para algum outro domínio, como:Então, se você acessar seu script usando em
yourdomain.com
vez delocalhost
, a chamada deverá ser bem-sucedida.fonte
Se você usa o navegador Google Chrome, pode hackear com uma extensão.
Você pode encontrar uma extensão do Chrome que modificará os cabeçalhos CORS rapidamente em seu aplicativo. Obviamente, este é apenas o Chrome, mas gosto que funcione sem nenhuma alteração em qualquer lugar.
Você pode usá-lo para depurar seu aplicativo em uma máquina local (se tudo funcionar na produção).
Aviso : Se o URL for quebrado, o nome da extensão é Access-Control-Allow-Origin: * . Eu recomendo que você desabilite esta extensão quando você não estiver trabalhando em suas coisas, porque, por exemplo, o youtube não funciona com esta extensão.
fonte
Tente isto - defina a chamada Ajax configurando o cabeçalho da seguinte maneira:
Em seguida, execute seu código abrindo o Chrome com a seguinte linha de comando:
fonte
Apenas para sua informação, percebi esta informação da documentação do jQuery que acredito se aplica a este problema:
Alterar o arquivo hosts como @thanix não funcionou para mim, mas a extensão mencionada por @dkruchok resolveu o problema.
fonte
O Chrome não permite que você integre dois locaishost diferentes, é por isso que estamos recebendo este erro. Você só precisa incluir o pacote Microsoft Visual Studio Web Api Core do gerenciador nuget. E adicionar as duas linhas de código no projeto WebApi em seu
WebApiConfig.cs
arquivo.Então tudo feito.
fonte
Se estiver chamando o serviço de inicialização do Spring. você pode lidar com isso usando o código abaixo.
fonte
Para desenvolvimento, você pode usar https://cors-anywhere.herokuapp.com , para produção é melhor configurar seu próprio proxy
fonte
O desbloqueio do cors funciona muito bem para o Chrome 78 [COrs unb] [1] https://chrome.google.com/webstore/detail/cors-unblock/lfhmikememgdcahcdlaciloancbhjino
é um plugin para o google chrome chamado "desbloquear cors"
Resumo: Chega de erros CORS anexando o cabeçalho 'Access-Control-Allow-Origin: *' a solicitações da web locais e remotas quando ativado
Esta extensão fornece controle sobre XMLHttpRequest e métodos de busca, fornecendo cabeçalhos personalizados "access-control-allow-origin" e "access-control-allow-methods" para todas as solicitações que o navegador recebe. Um usuário pode ativar e desativar a extensão no botão da barra de ferramentas. Para modificar como esses cabeçalhos são alterados, use os itens do menu de contexto do botão direito. Você pode personalizar os métodos permitidos. A opção padrão é permitir os métodos 'GET', 'PUT', 'POST', 'DELETE', 'HEAD', 'OPTIONS', 'PATCH'. Você também pode pedir à extensão para não sobrescrever esses cabeçalhos quando o servidor já os preencheu.
fonte
bem, outra forma é usar cors proxy, você só precisa adicionar https://cors-anywhere.herokuapp.com/ antes do seu URL.so seu URL ficará como https://cors-anywhere.herokuapp.com/http : //ajax.googleapis.com/ajax/services/feed/load .
O servidor proxy recebe http://ajax.googleapis.com/ajax/services/feed/load do URL acima. Em seguida, ele faz a solicitação para obter a resposta desse servidor. E, finalmente, o proxy aplica o
a essa resposta original.
Essa solução é ótima porque funciona tanto no desenvolvimento quanto na produção. Em resumo, você está aproveitando o fato de que a política de mesma origem só é implementada na comunicação de navegador para servidor. O que significa que não precisa ser aplicado na comunicação de servidor para servidor!
você pode ler mais sobre a solução aqui no meio 3 maneiras de corrigir o erro CORS
fonte
Use
@CrossOrigin
nobackendside
controlador de inicialização Spring (nível de classe ou nível de método), pois a solução para o'No 'Access-Control-Allow-Origin'
cabeçalho de erro do Chrome está presente no recurso solicitado. 'Esta solução está funcionando para mim 100% ...
----- OU -------
fonte
@CrossOrigin
anotação. A todos os que votaram negativamente: Por favor, indiquem o motivo!