来自javascript的HTTP请求使用包括标头的原始消息

我知道如何使用jQuery或XMLHttpRequest从javascript向我的REST api发出HTTP请求。 我现在要做的是在不设置标题值属性的情况下发出请求。 HTTP请求消息包括:

  • 请求行,例如GET /images/logo.png HTTP / 1.1,它从服务器请求名为/images/logo.png的资源
  • 标题,例如Accept-Language:en
  • 空行
  • 可选的邮件正文

对我的api的请求应该是这样的:

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

我想打开一个到localhost的连接:51127,发送上面的文字,然后得到回复。 这可能在JavaScript中?

更新:我知道如何设置标头。 我只想以不同的方式做到这一点。 有很多方法可以“构建”包含标题的请求并发送它。 我只是想手动构建它。

Javascript中没有套接字支持。 您只能使用XMLHTTPRequest包装器或可选的包装器(如jQuery.ajax来构建HTTP查询。 这是出于各种好的理由,主要是安全性。

您可以获取HmlHttpRequest对象的实例并使用setRequestHeader。

jQuery有一个beforeSend处理程序,你可以设置它来获取实际的hxr对象。

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