我确实获得了响应数据,但我无法获得我的自定义 HTTP 标头数据。
是的,这是一个跨域请求。我正在使用 Javascript 执行 Ajax 请求。我已经用 XMLHttpRequest 和 jQuery $.ajax 试过这个。我已经完成了我的服务器设置,我在发送数据时设置了这些:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET
我确实得到了我想要的响应数据。但我无法获得完整的 HTTP 标头响应。
使用 PHP,我在发送文本响应之前设置了以下内容。所以我假设我应该使用 getAllResponseHeaders() 来获取它。
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('My-Own-Test: nodatahere');
但这就是我得到的。
Content-Type: text/plain; charset=x-user-defined
Cache-Control: must-revalidate, post-check=0, pre-check=0
Expires: 0
它缺少My-Own-Test
. 仅供参考,这是我的 Javascript:
var formData = new FormData();
formData.append('username', 'my_username');
formData.append('book_id', 'test password');
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://mydomain.com/proc.php', true);
xhr.overrideMimeType("text/plain; charset=x-user-defined");
xhr.onload = function(e) {
console.log(this.getAllResponseHeaders());
};
xhr.send(formData);
我什至用 jQuery 尝试过......结果相同。
var data_to_send = {
username: 'my_username',
password: 'test_password'
};
var ajaxObj;
ajaxObj = $.ajax({
url: "https://mydomain.com/proc.php",
data: data_to_send,
type: "POST",
beforeSend: function ( xhr ) {
xhr.overrideMimeType("text/plain; charset=x-user-defined");
}
})
.done(function ( data ) {
console.log( ajaxObj.getAllResponseHeaders() );
});
仍然......没有运气。
但如果我通过 Firebug 或 Chrome 的开发者工具,我可以看到这些工具确实返回完整的 HTTP 标头信息,包括Content-Length
, Content-Encoding
, Vary
, X-Powered-By
, Set-Cookie
, Server
, 当然还有My-Own-Test
.