jquery $ .ajax自定义http头问题

我在查询使用自定义http头进行身份验证的REST webservice。

如果我在没有头文件的情况下执行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.');
  }
});

这里是萤火虫头输出:

选项 / service HTTP / 1.1 Host:server.com User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:8.0.1)Gecko / 20100101 Firefox / 8.0.1 Accept: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访问控制请求方法:POST 访问控制请求头:自定义头标密钥 Pragma:no-cache Cache-Control:no-cache

以及在用海报执行帖子时的smae标题,其返回期望的结果。

POST / service HTTP / 1.1 Host:server.com User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64; rv:8.0.1)Gecko / 20100101 Firefox / 8.0.1 Accept: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连接:保持活动CUSTOM-HEADER-KEY:CUSTOM-HEADER-VALUE Pragma:no-cache Cache-Control:no-cache Content-Length:0

差异很明显,但我不知道我在jQuery代码中做了什么错误。

任何人都可以帮助我吗?


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

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

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

Access-Control-Allow-Headers: YOUR_HEADER_NAME

这是一个跨域请求。 所以你不能从浏览器端解决它。 您可能需要服务器端代理才能执行POST到不同的域。


这可能或不会帮助,但我认为你可以在数据选项中添加标题:

$.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.');
  }
});
链接地址: http://www.djcxy.com/p/46243.html

上一篇: jquery $.ajax custom http headers issue

下一篇: site AJAX using jQuery