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