webForumDet fria alternativet

kan xmlhttp vara spärrat??

5 svar · 555 visningar · startad av evilaid

evilaidMedlem sedan apr. 2009431 inlägg
#1

När jag använder mig av asp fungerar min funktion men när jag använder javascript får jag ett felmeddelande som säger åtkomst nekad?

den java script kod jag använder ser ut så här:

function makeRequest(url) { //Märk väl att vi skickar in sidan som vi ska öppna som parameter (url)
	        var http_request = false;

	        if (window.XMLHttpRequest) { // Detta är fö Mozilla, Safari, ...
	            http_request = new XMLHttpRequest();
	            if (http_request.overrideMimeType) {
	                http_request.overrideMimeType('text/xml');
	                // See note below about this line
	            }
	        } else if (window.ActiveXObject) { // Detta är för Internet Explorer

	            try { //Här måste vi köra en try och catch för IE så vi får rätt objekt
	                http_request = new ActiveXObject("Msxml2.XMLHTTP");
	            } catch (e) {
	                try {
	                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
	                } catch (e) { }
	            }

	        }

	        if (!http_request) { //om anropet är fortfarande falskt så har vi inte lyckats, varna om det
	            alert('Jag ger upp :( Kunde inte skapa en XMLHTTP instans');
	            return false;
	        }

	        http_request.onreadystatechange = function() { alertContents(http_request); }; //Nu pekar vi på den funktionen vi vill aktivera
	        http_request.open('GET', 'http://www.bokia.se/bok/9789186231125/', true); //Här skickas parametern URL in
	        http_request.send(null); //och så sker anropet med SEND()

	    }

	    function alertContents(http_request) { //Det är hit vi kommer sen

	        if (http_request.readyState == 4) { //Om allt har laddat klart...
	            if (http_request.status == 200) { //kontrollera ifall allt är OK, för isåfall...
	                document.getElementById('lajv').innerHTML = http_request.responseText; //hämta texten och visa den i en DIV (lajv)
	            } else {
	            document.getElementById('lajv').innerHTML = http_request.responseText; + "Ett fel uppstod vid anropet"; //...annars så har något gått snett
	            }
	        }

	    }

	    //Här skapar jag en timer som ska anropa min sida var 10:e sekund
	    //Detta är självklart valfrimakeRequesttt, du kan välja att istället använda en länk för att aktivera det hela
	    //Märk väl att jag använder mig av Math.random() i länken, jag ska förklara nedan varför.

Ovan kod hittade jag på nätet men jag tycker den verkar ok. Skumt ju att det fungerar med asp men inte med javascript?
Jag kör IE 8, satt säkerhetinställningar på låg..

Felet lyder så här:

Meddelande: Åtkomst nekad.

Rad: 36
Tecken: 10
Kod: 0
URI: http://127.0.0.1/studlit/test.asp

och detta är rad 36:
http_request.open('GET', 'http://www.bokia.se/bok/9789186231125/', true); //Här skickas parametern URL in

Kommer inte på vad det kan vara?

Mvh

voigtann1Medlem sedan juni 20018 810 inlägg
#2

Om du läser om AJAX så kan du INTE anropar en annan server på en helt annan domän än sin egna av säkerhetsskäl. Och frågan är om du få screenscrapar äns från Bokia.

evilaidMedlem sedan apr. 2009431 inlägg
#3

ok, det funkar ju bra med asp, då var det inga problem att plocka från bokia.se
Provade detta i asp:

<%
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://www.bokia.se/bok/9789186231125/", False
objHTTP.Send
strHTML=objHTTP.responseText
Set objHTTP = Nothing

'Hämtar titel
Set objRegExp = New regexp
objRegExp.Global = false
objRegExp.IgnoreCase = true
objRegExp.Pattern = "<th>Originaltitel:</th>[\n\s]+<td>([^<]+)</td>"
Set hittade = objRegExp.Execute(strHTML)

'response.Write strHTML

response.Write Replace(hittade.item(0),"Originaltitel:","")

 %>

inga som helst problem..

* du lär nog känna igen din kod:)

Men det är alltså så att bara asp fungerar?

JojoxxMedlem sedan juni 20004 306 inlägg
#4

Snarare är det miljön där scriptet körs. JavaScript körs av användarens webbläsare, där får du inte läsa från andra domäner (av säkerhetsskäl). På servern (där asp-koden körs) får du göra "vad du vill", oavsett om det är via asp, php, perl, kompilerad exe-fil, whatever.

evilaidMedlem sedan apr. 2009431 inlägg
#5

ok, då är jag med så långt... Grejen är att jag vill hämta information från annan sida och fylla i denna i ett formulär som jag har på sidan..

Måste hitta någon anna lösning då, däämm...

Tack för hjälpen.

voigtann1Medlem sedan juni 20018 810 inlägg
#6

Du kan (om du ens få göra detta för Bokia) göra en ASP screenscrape och kalla den sidan med AJAX, då din screenscrape sida finns på din server.

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb