Estou com um problema, está dando esse erro e não sei como resolver:
https://uploaddeimagens.com.br/imagens/screenshot_1-png-573812cc-6ab5-4d06-adf7-c724b0d116bb
Como proceder para resolver? Agradeço desde já.
Estou com um problema, está dando esse erro e não sei como resolver:
https://uploaddeimagens.com.br/imagens/screenshot_1-png-573812cc-6ab5-4d06-adf7-c724b0d116bb
Como proceder para resolver? Agradeço desde já.
Oi Iury tudo bem ?
Você não pode fazer requisições XMLHttpRequest entre servidores diferentes a não ser que o servidor de origem dos dados permita seu site ou todos sites de pedirem os dados deles.
É uma política de segurança da internet chamada CORS.
Isso evita que uma página abrigue dentro dela outra página e copie os dados que o usuário digitar nos formulários como senhas e números de cartão de crédito sem o usuário perceber.
Ou coloca a página que quer os dados em um iframe ( e não vai poder usar javascript dentro desse iframe) ou peça para o servidor de origem dos dados permissão para você acessar ele.
Espero ter ajudado!!!
Obrigado pela resposta André, eu entendi. No caso o meu código está em php, e eu vi, pesquisando na internet, que esse comando
<?php
header("Access-Control-Allow-Origin: *");
permite que eu permita o request de outros servidores. Ele faz isso mesmo? É perigoso fazer isso? Porque eu preciso retirar esse erro que aparece, e mesmo aparecendo o erro, ainda é enviado o formulário.
Agradeço desde já.
Deixa eu ver se eu entendi. Você tem 2 servidores em 2 domínios diferentes. Você quer que um acesse o outro via XML correto?
Então modifique o cabeçalho php do site que você quer acessar para header("Access-Control-Allow-Origin: 'http://meuprimeirosite.com.br'");
Assim só o seu primeiro site vai poder fazer uma chamada XML e ninguém mais.
Eu uso o codeigniter, nele existe esse comando:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Isso que faz com que esse erro apareça?
Eu vi na internet que eu devo colocar esse comando que você me mostrou no controller em codeigniter. Eu posso colocar em qualquer controller que irá funcionar?
Oi Iury, o BASEPATH é pra evitar que scripts PHP de outros sites não consigam executar lógicas suas. Já que o BASEPATH está definido dentro do seu projeto. Então ele não resolve o problema do CORS.
E você pode configurar o Header assim mesmo:
<?php header("Access-Control-Allow-Origin: *");
Isso por que você diz para o navegador: Aceito requisições ajax de qualquer origem.
É seguro? Sim, mas depende...
Seu ajax consegue fazer remoção de dados? Você vai permitir que mais pessoas façam requisições desse tipo? Você tem filtros que evitam que as pessoas façam operações não permitidas? Então tá tudo certo.
Entendi, obrigado pelas respostas