如果响应中缺少Allow Origin标头,如何通过XHR发送xml数据?

时间:2017-11-20 15:12:44

标签: xmlhttprequest cors

注意: - 我实际上编辑了我的旧问题,所以忽略答案。

我想将一些xml数据发送到一个网站,该网站实际上是用于演示目的,

所以这是代码,

<script>

var params = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"
 "xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"
 "xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"
 "<soap:Body>"
  "<TransferBalance xmlns='http://www.altoromutual.com/bank/ws/'>"
   "<transDetails>"
    "<transferDate>2000-01-01</transferDate>"
    "<debitAccount>20</debitAccount>"
    "<creditAccount>21</creditAccount>"
    "<transferAmount>240</transferAmount>"
   "</transDetails>"
  "</TransferBalance>"
 "</soap:Body>"
"</soap:Envelope>";

var xhr = new XMLHttpRequest();

xhr.onreadystatechange=function(){
  if(xhr.readyState==4 && xhr.status==200){
    console.log(xhr.responseXML);
  }
}

xhr.open("POST" ,"http://demo.testfire.net/bank/ws.asmx");

xhr.setRequestHeader("SOAPAction", "http://www.altoromutual.com/bank/ws/TransferBalance");

xhr.setRequestHeader("Content-Type", "text/xml");



xhr.send("params");

</script>

现在,当我看到网络面板时,我的OPTIONS请求变好了,但我的原始请求在哪里?

当我看到控制台面板时,它说缺少访问控制允许来源?现在我该怎么做?

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

使用tmp_name键作为move_uploaded_file

中的第一个参数
$_FILES['filename']['tmp_name'];

只是抬头,因为您正在编写文件上传模块,请正确检查mime类型。

对于php 5.3+,请使用finfo()

$finfo = new finfo(FILEINFO_MIME);
print_r($finfo->buffer(file_get_contents($_FILES['filename']['tmp_name']))); //returns the mime type. Example (image/png)

在脚本的最顶部添加错误报告。

error_reporting(E_ALL);

同时删除@旁边的$_FILES。这是一个错误抑制器。

还要确保filename数组中实际存在$_FILES。执行print_r($_FILES);以验证它确实存在

答案 1 :(得分:0)

使用此方法,因为PHP使用临时名称

存储文件
move_uploaded_file(@$_FILES['filename']['tmp_name'], $original_path1)

此外,请务必检查文件夹权限问题(非常常见)和error_log。