Ir para conteúdo


Foto

Uso do CORS + Ext.Ajax + POST

cors chrome ajax jsonp request

Melhor Resposta Wemerson Januario , 10 December 2015 - 21:54

Acho que navegador nem S.O tem culpa disso ai não viu. minha aposta vai para seu server,

 

Sobre preflight dá uma olhada sobre o assunto aqui

 

https://developer.mo...ss_control_CORS

 

http://stackoverflow...flight-requests

 

Para vc testar se é server ou front-end, tenta consumir essa api minha aqui que está com CORS habilitado

 

http://api.wemersonj...nto/funcionario

 

ela terá como resposta um json

 

Vlws

Visualizar todo o conteúdo do post


  • Por favor, faça o login para responder
6 respostas neste tópico

#1 devlinux2

devlinux2

    Member Avançado

  • Membros
  • PipPipPip
  • 202 posts

Postado 09 December 2015 - 16:27

Olá pessoal,

Alguém aqui trabalha com extjs e CORS?

http://enable-cors.org/

http://www.loiane.co...xtjs-e-backend/

Já faz tempo que trabalho assim sempre funcionou numa boa, porém agora só está funcionando para request do tipo GET.

 

Quando eu faço:

Ext.Ajax.request({
url: 'http://outroserver:8080/site'
method: 'POST',

 

Vem a mensagem:

Requisição cross-origin bloqueada: A política de mesma origem (Same Origin Policy) impede a leitura do recurso remoto em http://localhost:8080/sistema/login/. (Motivo: o cabeçalho CORS 'Access-Control-Allow-Origin' não está presente).

 

Isso tanto com chrome quanto no firefox e o mais estranho é que eu olho nos logs do servidor e percebo que a requisição nem está sendo feita, aparentemente o próprio navegador já está barrando o request

sem nem ao menos perguntar para servidor se ele aceita CORS ou não.

 

No meu server não mudei nada esta configuração sempre funcionou seja com GET ou POST mas agora só está funcionando com GET...

<filter>
		<filter-name>CorsFilter</filter-name>
		<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
		<init-param>
			<param-name>cors.allowed.methods</param-name>
			<param-value>POST,GET,HEAD,OPTIONS,PUT,DELETE</param-value>
		</init-param>
		<init-param>
    		<param-name>cors.allowed.origins</param-name>
    		<param-value>*</param-value>
  		</init-param>
  		<init-param>
    		<param-name>cors.allowed.headers</param-name>
    		<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
  		</init-param>
  		<init-param>
    		<param-name>cors.exposed.headers</param-name>
    		<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
  		</init-param>
  		<init-param>
    		<param-name>cors.support.credentials</param-name>
    		<param-value>true</param-value>
  		</init-param>  		  		
	</filter>
	<filter-mapping>
		<filter-name>CorsFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

Obrigado.

 

 



#2 Wemerson Januario

Wemerson Januario

    Administrador Ext JS Brasil

  • Administrators
  • 857 posts
  • LocationGoiânia - GO

Postado 09 December 2015 - 16:51

Eu trabalho com CORS na minha API RESTful e nunca tive esse problema com EXT JS, até porque tudo se configura no server.

 

Será que você não fez alguma alteração no Ext JS, versão, override de headers ou no seu back-end?

 

Será que seu problema não tem a ver com preflight

 

Vlws


Wemerson Januario
http://wemersonjanuario.com.br
Twitter: @januariocoder

 

Treinamento e Consultoria Ext JS. Qualifique-se já!


#3 devlinux2

devlinux2

    Member Avançado

  • Membros
  • PipPipPip
  • 202 posts

Postado 10 December 2015 - 20:17

O que seria esse preflight? Sobre o Extjs descarto que seja com ele pq fiz o teste no jquery e está acontecendo a mesma coisa, por enquanto estou suspeitando que seja alguma

coisa que mudou no navegar pq o navegador nem chega a fazer o request externo ele bloqueia antes.

#ASSIM VAI QUE VAI!
$( document ).ready(function() {

    $.ajax({
        url: 'http://localhost:8080/meusistema/',

        //type: "POST",

        success: function(data) {
            console.log('sucesso');
            console.log(data);
        },

        error: function() {
            console.log('falhou');
        }
    });

});

#ASSIM NEM A PAU!
$( document ).ready(function() {

    $.ajax({
        url: 'http://localhost:8080/meusistema/',

        type: "POST",

        success: function(data) {
            console.log('sucesso');
            console.log(data);
        },

        error: function() {
            console.log('falhou');
        }
    });

});

Tetei chamar o chrome com --disable-web-security e o firefox também entrei em about:config desativei a verificação Allow Origin Policy mas mesmo assim não deu certo.

Eu agora vou testar no windows pra ver se acontece porque to usando linux.

 

Obrigado!



#4 Wemerson Januario

Wemerson Januario

    Administrador Ext JS Brasil

  • Administrators
  • 857 posts
  • LocationGoiânia - GO

Postado 10 December 2015 - 21:54   Melhor Resposta

Acho que navegador nem S.O tem culpa disso ai não viu. minha aposta vai para seu server,

 

Sobre preflight dá uma olhada sobre o assunto aqui

 

https://developer.mo...ss_control_CORS

 

http://stackoverflow...flight-requests

 

Para vc testar se é server ou front-end, tenta consumir essa api minha aqui que está com CORS habilitado

 

http://api.wemersonj...nto/funcionario

 

ela terá como resposta um json

 

Vlws


Wemerson Januario
http://wemersonjanuario.com.br
Twitter: @januariocoder

 

Treinamento e Consultoria Ext JS. Qualifique-se já!


#5 devlinux2

devlinux2

    Member Avançado

  • Membros
  • PipPipPip
  • 202 posts

Postado 18 December 2015 - 15:55

Obrigado pela ajuda, demorei pra responder porque tava tentando achar a solução mas o esforço foi em vão.

 

Realmente o problema está no meu servidor mas eu não sei mais o que fazer pra funcionar alterei um monte de coisa e nada....

 

Ta complicado manter Java + Tomcat + Extjs só dor de cabeça....

 

Meu servidor (Tomcat 8.0.14) quando devolve o response para o browser não está colocando o header: Access-Control-Allow-Origin:"*" dai como o browser tem uma policy de segurança que bloqueia (403) o request que não tem esse cabeçalho.

Mesmo desligando essa trava dentro do navegador não dá certo porque o servidor respondo com 404 quando desliga a trava...

 

O que não me conformo é que esse esquema sempre funcionou, uso isso já faz muito tempo e nunca tive problema.

 

Mas mesmo assim obrigado.


  • Wemerson Januario curtiu isso

#6 Wemerson Januario

Wemerson Januario

    Administrador Ext JS Brasil

  • Administrators
  • 857 posts
  • LocationGoiânia - GO

Postado 18 December 2015 - 17:56

Welcome to PHP + Laravel hhehe. bricadeira. o importante é que já descobrimos a falha. hehe


Wemerson Januario
http://wemersonjanuario.com.br
Twitter: @januariocoder

 

Treinamento e Consultoria Ext JS. Qualifique-se já!


#7 devlinux2

devlinux2

    Member Avançado

  • Membros
  • PipPipPip
  • 202 posts

Postado 21 December 2015 - 08:05

Valew Wemerson pela ajuda, vou encerrar o post pq não é problema do extjs.

Obrigado abraços!


  • Wemerson Januario curtiu isso





Tópicos que também usam as tags cors, chrome, ajax, jsonp, request:

0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos