jquery $ .ajax自定义http标头问题

Mar*_*ano 7 ajax jquery post header

我正在查询使用自定义http标头进行身份验证的REST Web服务.

如果我执行没有标题的POST我得到了预期的错误,但是当我添加标题时,我得到404错误而不是我实际需要的错误.

这是我的代码

$.ajax({
  type: 'POST',
  url: 'http://server.com/service',
  beforeSend: function (xhr) { xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE') },
  success: function(data) {    
    alert('success.');
  }
});
Run Code Online (Sandbox Code Playgroud)

这是firebug标头输出:

选项 /服务HTTP/1.1主机:server.com用户代理:Mozilla/5.0(Windows NT 6.1; WOW64; rv:8.0.1)Gecko/20100101 Firefox/8.0.1接受:text/html,application/xhtml + xml ,application/xml; q = 0.9,/ ; q = 0.8 Accept-Language:en-us,en; q = 0.5 Accept-Encoding:gzip,deflate Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7连接:keep-alive原始:null Access-Control-Request-Method:POST Access-Control-Request-Headers:custom-header-key Pragma:no-cache Cache-Control:no-cache

和海报一起执行帖子时的smae标题,返回所需的结果.

POST/service HTTP/1.1主机:server.com用户代理:Mozilla/5.0(Windows NT 6.1; WOW64; rv:8.0.1)Gecko/20100101 Firefox/8.0.1接受:text/html,application/xhtml + xml ,application/xml; q = 0.9,/ ; q = 0.8 Accept-Language:en-us,en; q = 0.5 Accept-Encoding:gzip,deflate Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.7连接:keep-alive CUSTOM-HEADER-KEY:CUSTOM-HEADER-VALUE Pragma:no-cache Cache-Control:no-cache Content-Length:0

差异非常明显,但我不知道我在jquery代码中做错了什么.

有人可以帮帮我吗?

小智 5

在跨域请求中,如果服务浏览器不允许标头,则只需删除它

首先,浏览器浏览器将进行OPTION调用以检查允许的内容(Origin,Headers,Methods)

在您的服务配置中,您必须允许标头才能使用它将其发送到服务器

Access-Control-Allow-Headers: YOUR_HEADER_NAME
Run Code Online (Sandbox Code Playgroud)


oro*_*olo 1

这可能有帮助,也可能没有帮助,但我认为您可以在数据选项中添加标题:

$.ajax({
  type: 'POST',
  data: put the results of your header request here,
  url: 'http://server.com/service',
  beforeSend: function (xhr) { xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE') },
  success: function(data) {    
    alert('success.');
  }
});
Run Code Online (Sandbox Code Playgroud)