Diskuze: javascript GET httprequest s upravou hlavicky
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
html:
<HTML>
<HEAD>
<script type="text/javascript">
function getHttp(theUrl)
{
var request = new XMLHttpRequest();
request.open( "GET", theUrl, true );
request.setRequestHeader( "USER", "service" );
request.send( null );
return request.responseText;
}
</script>
</HEAD>
<BODY>
<button onclick="getHttp('http://localhost:9000/user/id/1')">Click
me</button>
</BODY>
</HTML>
Chyba:
XMLHttpRequest cannot load http://localhost:9000/user/id/1. No
'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8000' is therefore not allowed access. The response
had HTTP status code 401.
CORS bych mel mit zadany spravne, ale obcas se objevuje, kdyz chybi cil pozadavku. SKutecna chyba bude asi HTTP status code 401 -> Unauthorized
Pokud vím, tak hodně prohlížečů na localhostu CORS blokuje. Musíš buďto v prohlížeči povolit tuhle možnost (například chrome jde spustit s flagou --disable-web-security), použít pro klienta i server stejný HTTP server nebo ty požadavky posílat přes nějakou proxy.
Diky za odpoved!
mam chrome Verze 43.0.2357.124 m pustil jsem ho chrome.exe
--disable-web-security ale CORS zlobi porad:
XMLHttpRequest cannot load http://localhost:9000/user/id/1. No
'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:8000' is therefore not allowed access. The response
had HTTP status code 401.
Do hlavicky uz cpu i:
request.setRequestHeader('Access-Control-Allow-Origin', '*');
request.setRequestHeader('Access-Control-Allow-Methods', 'GET');
zkusim rozjet webovy server na IP adrese a do hosts zadat jmeno, aby to neslo pres localhost.
Teď jsem to zkoušel ve stejné verzi chromu a jde to i bez té flagy. Podle té chyby vůbec v odpovědi serveru nemáš Access-Control-Allow-Origin. Na serveru přidej k odpovědi hlavičku Access-Control-Allow-Origin: *
Pouzivam Apache 2.2 na win 7, v httpd.conf mam oddil:
DocumentRoot "C:\Users\UI570221\Install\Apache22\htdocs\app"
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
Header set Access-Control-Allow-Origin "*"
</Directory>
<Directory "/Apache22/htdocs/app">
AllowOverride None
Order allow,deny
Allow from all
Header set Access-Control-Allow-Origin "*"
</Directory>
uz nevim kam bych tu deklaraci vecpal..
Muzu samozrejme zkusit jiny webserver..
Ale podle chyby bude problem v tom, ze tu deklaraci musim mit na tom cilovem
serveru a ne na tom odkud jde pozadavek, ze? Coz by vysvetlovalo me marne
snazeni
XMLHttpRequest cannot load http://10.42.18.64:9000/user/id/1. No
'Access-Control-Allow-Origin' header is present on the requested
resource.
Ahoj. Mě to jede normálně, akorát mi to s daty pošle i celou šablonu webu(kód html). Nevíš jak se tomu dá zabránit, aby se to html neposílalo?
var app = angular.module('myApp', []);
app.controller('userCtrl', function($scope, $http){
$scope.users =[];
$http.get("http://projekt4.net/chat/get")
.success(function (response) {$scope.users = response;})
.error(function(){$scope.users= [];});
});
Odpověď vypadá takto:
{[{"name":"martin","id":12},{"name":"tomas","id":31},{"name":"nikola","id":34}]
<!DOCTYPE html....... hromada html, které nechci posílat.
Zobrazeno 8 zpráv z 8.