2010-12-23 7 views
1

Ich weiß, wie eine HTTP-Anfrage an meine REST API von Javascript mit jQuery oder XMLHttpRequest. Was ich jetzt tun möchte, ist, die Anfrage zu stellen, ohne Eigenschaften für die Header-Werte zu setzen. Ein HTTP request message besteht aus:HTTP-Anfrage von Javascript mit Raw-Nachricht einschließlich Kopfzeilen

  • Anforderungsleitung, wie beispielsweise GET /images/logo.png HTTP/1.1, die eine Ressource /images/logo.png vom Server
  • Headers, wie beispielsweise genannt Anfragen akzeptiert -Sprache: en
  • Eine leere Zeile
  • Ein optionaler Nachrichtentext

Eine Anfrage an meine api sollte som aussehen ething wie folgt aus:

GET /myapi/myresource/1234 HTTP/1.1 
Host: localhost:51127 
Content-Type: application/x-www-form-urlencoded 
Accept: application/json, text/csv 
Authorization: Basic <base64 encoded credentials> 

Ich mag würde eine Verbindung mit localhost öffnen: 51127, den oben stehenden Text senden und die Antwort zu bekommen. Ist das in Javascript möglich?

Update: Ich weiß, wie Sie Header setzen. I will es einfach anders machen. Es gibt viele Möglichkeiten, eine Anfrage inklusive Header zu erstellen und zu senden. Ich möchte es nur manuell erstellen.

+0

Siehe ['jQuery.get'] (http://api.jquery.com/jQuery.get/). – meagar

+0

jQuery.get ist eine Abkürzung für das, was ich gerade mache, die jQuery.ajax verwendet. Dies gibt die Header für Sie an, die mithilfe von Eigenschaften und Callbacks überschrieben werden können. Ich möchte sowohl Header als auch Inhalt mit dem obigen Format angeben. –

Antwort

2

Es gibt keine Socket-Unterstützung in Javascript. Sie können HTTP-Abfragen nur erstellen, indem Sie den XMLHTTPRequest-Wrapper oder optional Wrapper für , den wie jQuery.ajax verwenden. Dies ist aus allen möglichen guten Gründen, hauptsächlich Sicherheit.

2

Sie können möglicherweise eine Instanz des HmlHttpRequest-Objekts abrufen und setRequestHeader verwenden.

jQuery verfügt über einen beforeSend-Handler, den Sie festlegen können, um das tatsächliche hxr-Objekt abzurufen.

$.ajax({ 
     beforeSend: function(xhr){ 
      xhr.setRequestHeader("name","value"); 
     } 
    ... 
    }) 
+0

Das mache ich jetzt. Ich möchte den Header nicht so setzen. Ich möchte eine korrekt formatierte HTTP-Anfrage senden, die bereits die Header enthält. –

Verwandte Themen