[Prototype] Ajax Request auf Firefox: HTTP 405 Method Not Allowed

zer0

Erfahrenes Mitglied
Hallo,

ich habe ein Problem das nur auf Firefox passiert und vllt ist es ja bekannt!

Ich führe ein Ajax Rquest mit Prototype aus:

Javascript:
	function request(url, query, onCreate, onLoading, onComplete, onFailure) {
	  var myAjax = new Ajax.Request(url, {
	    method: "post",
	    postBody: query,
	    contentType: 'application/x-www-form-urlencoded',
	    requestHeaders: {
	      "USER_AGENT": navigator.userAgent
	    },
	    onCreate: onCreate,
	    onLoading: onLoading,
	    onComplete: onComplete,
	    onFailure: onFailure
	  });
	}

Ausgeführt auf Safari ist es kein Problem, nur bei Firefox. Deswegen habe ich es auch auf einem XAMPP Server probiert und dort auch kein Ergebnis.

Folgender Header sendet und bekommt Firefox, aufgezeichnet mit dem Addon Live HTTP Headers:
Code:
http://translate.google.com/

OPTIONS / HTTP/1.1
Host: translate.google.com
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: user_agent,x-prototype-version,x-requested-with

HTTP/1.1 405 Method Not Allowed
Content-Type: text/html; charset=UTF-8
Content-Length: 1394
Date: Thu, 13 Jan 2011 19:52:02 GMT
Server: GFE/2.0

Wie man sieht wird OPTIONS als Anfrage an den Server verwendet, und ich bekomme ein TPP 405 zurück.

Kennt jemand das Problem oder kann mir helfen?

Gruß
 
Kann es sein das du versuchst code von einer anderen Seite zu laden?
Falls ja, dann ist das dein Problem.

Btw. läuft das ganze auch unter dem so genannten "same origin policy" Problem welches du mit AJAX hast.

Das bedeutet soviel das alle Ajax calls auf der selben Domain sein müssen.

Ansonsten könnte man ganz viele tolle sachen machen die ich hier mal lieber nicht erwähne ;D

Aber schön wenn das der Safari kann :P
 
Zuletzt bearbeitet:
Hey,

ja das habe ich auch schon gelesen das es wegen dieser Same Origin Policy Probleme gibt. Deswegen verwendet der auch OPTIONS statt POST.

Mich irretiert nur warum Safari das kann, aber Firefox nicht. Könnte es daran liegen das ich es lokal teste?
 
naja die implementierung der policy ist browser abhängig.
wenn du es lokal testest hast du in der regel mehr recht als wenn es im netz liegt.
das gleiche gilt auch dann wenn du mit zertifikaten arbeitest um eine vertrauenswürdige umgebung aufzubauen.

leider kann man da nichts tun ausser sich eine andere lösung zu überlegen.
ggf hilft dir ja crosssite scripting, hier gibt es eine art wie man mit http get seiten aufrufe macht um ein dort liegendes javascript auszuführen was wiederrum auf dieser domain liegt.

z.b. du hast eine seite mit einem iframe und dieses iframe ruft eine javascript funktion auf deiner seite auf.

ohne der implementierung einer wie oben beschriebenen lösung wäre es sonst nicht möglich.
 
Warum verletzte ich überhaupt die SOP? Entweder ich verstehe die SOP nicht, oder ich mache was falsch, was ich nciht weiß.
 
Zurück