Estou usando este código para fazer uma solicitação AJAX:
$("#userBarSignup").click(function(){
$.get("C:/xampp/htdocs/webname/resources/templates/signup.php",
{/*params*/},
function(response){
$("#signup").html("TEST");
$("#signup").html(response);
},
"html");
Mas, no console JavaScript do Google Chrome, continuo recebendo este erro:
XMLHttpRequest não pode carregar file: /// C: /xampp/htdocs/webname/resources/templates/signup.php. As solicitações de origem cruzada são suportadas apenas para HTTP.
O problema é que o arquivo signup.php está hospedado no meu servidor web local, de onde todo o site é executado, portanto não é entre domínios.
Como posso resolver esse problema?
javascript
siannone
fonte
fonte
allow_url_include = On
do meu servidor.Respostas:
Você precisa realmente executar um servidor da web e fazer a solicitação get para um URI nesse servidor, em vez de fazer a solicitação get para um arquivo; por exemplo, mude a linha:
ler algo como:
e a página de solicitação inicial também precisa ser feita em http.
fonte
allow_url_include = On
do meu servidor. Posso ativá-lo com segurança ou ele causará alguns problemas de segurança?python -m SimpleHTTPServer 8888
e (3) navegue no navegador atéhttp://localhost:8888/
python -m http.server 8888
Tive sorte ao iniciar o Chrome com a seguinte opção:
No os x try (redigite os travessões se copiar e colar):
Em outro * nix run (não testado)
ou no Windows edite as propriedades do atalho do cromo e adicione a opção, por exemplo
ao final do caminho "alvo"
fonte
open -a 'Google Chrome' --args —allow-file-access-from-files
. Observe também: Se você especificar um URL baseado em arquivo: // (em vez de um caminho do sistema de arquivos), certifique-se de usar emfile://localhost/...
vez defile:///...
.Se você está trabalhando em um pequeno projeto de front-end e deseja testá-lo localmente, normalmente você o abre apontando seu diretório local no navegador da web, por exemplo, digitando arquivo: /// home / erick / mysuperproject / index .html na sua barra de URL. No entanto, se seu site está tentando carregar recursos, mesmo que eles estejam localizados em seu diretório local, você poderá ver avisos como este:
XMLHttpRequest não pode carregar file: ///home/erick/mysuperproject/mylibrary.js. As solicitações de origem cruzada são compatíveis apenas com HTTP.
O Chrome e outros navegadores modernos implementaram restrições de segurança para solicitações de origem cruzada, o que significa que você não pode carregar nada por meio de file: ///, você precisa usar o protocolo http: // em todos os momentos, até mesmo políticas de mesma origem localmente devidas. Simples assim, você precisa montar um servidor web para executar seu projeto lá.
Este não é o fim do mundo e existem muitas soluções por aí, incluindo o bom e velho Apache (com VirtualHosts se você estiver executando vários outros projetos), node.js com express, um servidor Ruby, etc. ou simplesmente modificando seu configurações do navegador.
No entanto, existe uma solução mais simples e leve para os preguiçosos. Você pode usar o SimpleHTTPServer do Python. Ele já vem com o python, então você não precisa instalar ou configurar nada!
Então faça cd para o diretório do seu projeto, por exemplo
1 cd / home / erick / mysuperproject e então simplesmente use
1 python -m SimpleHTTPServer E é isso, você verá esta mensagem em seu terminal
1 Servindo HTTP na porta 0.0.0.0 8000 ... Agora você pode voltar ao seu navegador e visitar
http://0.0.0.0:8000
todos os seus arquivos de diretório servidos lá. Você pode configurar a porta e outras coisas, basta ver a documentação. Mas esse truque simplesmente funciona para mim quando estou com pressa para testar uma nova biblioteca ou desenvolver uma nova ideia.Pronto, boa codificação!
EDIT: No Python 3+, SimpleHTTPServer foi substituído por http.server. Portanto, no Python 3.3, por exemplo, o seguinte comando é equivalente:
fonte
Eu estava recebendo o mesmo erro ao tentar carregar simplesmente arquivos HTML que usavam dados JSON para preencher a página, então usei node.js e express para resolver o problema. Se você não tem o nó instalado, você precisa instalar o nó primeiro.
Instalar expresso
npm install express
Crie um arquivo server.js na pasta raiz do seu projeto, no meu caso uma pasta acima dos arquivos que eu queria servir
Coloque algo como o seguinte no arquivo server.js e leia sobre isso no site express gihub:
Depois de salvar server.js, você pode executar o servidor usando:
node server.js
http://localhost:8000/FILENAME
e você verá o arquivo HTML que está tentando carregarfonte
Se você tiver nodejs instalado, poderá baixar e instalar o servidor usando a linha de comando:
Altere os diretórios para o diretório de onde deseja servir os arquivos:
Execute o servidor:
que produzirá a mensagem Iniciando o servidor http, servindo em:
Disponível em: http: // your_ip: 8080 e http://127.0.0.1:8080
Isso permite que você use urls em seu navegador, como
fonte
Funciona melhor assim. Certifique-se de que ambos os arquivos estejam no servidor. Ao chamar a página html, use o endereço da web como:,
http:://localhost/myhtmlfile.html
e nãoC::///users/myhtmlfile.html
,. Certifique-se também de que o url passado ao json é um endereço da web conforme indicado abaixo:fonte
altere o caminho chromeLocation com o seu.
salve acima como um arquivo .bat.
arraste e solte seu arquivo no arquivo em lote que você criou. (o cromo oferece a opção de restaurar as páginas, portanto, se você tiver as páginas abertas, basta clicar em restaurar e funcionará).
fonte
Você também pode iniciar um servidor sem python usando o interpretador php.
Por exemplo:
Isso pode ser útil se você quiser uma alternativa ao npm, já que o utilitário php vem pré-instalado em alguns sistemas operacionais (incluindo Mac).
fonte
Para todos os usuários de python:
Basta ir para a pasta de destino no terminal.
em seguida, inicie o servidor HTTP para Python3 +:
Servindo HTTP na :: porta 8000 (http: // [::]: 8000 /) ...
vá para o seu link: http://0.0.0.0:8000/
Aproveitar :)
fonte