ローカルで立てたサーバー(MAMP)にXMLを送ろうとしているのですが、「元の http://localhost が Access-Control-Allow-Origin ヘッダーに見つかりません。」とコンソールのエラーに表示されてしまいます。
PHPのコードは以下のようになっており、ヘッダーにAccess-Control-Allow-Originを定義しています。
PHP
1<?php 2 3 header("Access-Control-Allow-Origin: *"); 4 header("Access-Control-Allow-Headers: Origin, X-Requested-With"); 5 6 $xml = file_get_contents("php://input"); 7 8 echo $xml; 9 10?>
クライアントからは以下のように通信しようとしています。
javascript
1var xhr = new XMLHttpRequest(); 2xhr.open('POST', 'http://192.168.0.145/test'); 3xhr.setRequestHeader('Content-Type', 'application/xml'); 4xhr.onload = function() { 5 alert(this.responseText); 6} 7xhr.onerror = function() { 8 alert(this.statusText); 9} 10xhr.send(params);
なお、postのパラメーターのxmlは以下のように作成しています。
javascript
1var params = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>" + 2 "<items><item>" + 3 "<test">test</test>" + 4 "</item></items>"
サーバー側でAccess-Control-Allow-Originのヘッダーを定義しているのに、なぜ「Access-Control-Allow-Origin ヘッダーに見つかりません」というエラーが表示されるのでしょうか?
また、ブラウザのコンソールのiマークに「http://192.168.0.145/test のXMLHttpRequest には CORS プレフライトが必要です。」と書かれています。
ブラウザはIE11を使っています。
どなたか分かる方がいれば教えていただきたいです。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー