応答データは取得できますが、カスタム 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 の開発者ツールを調べてみると、これらのツールがContent-Length
、Content-Encoding
、Vary
、X-Powered-By
、Set-Cookie
、Server
そしてもちろんMy-Own-Test
.