本地文件Html - XMLHttpRequest:网络错误0x80070005,访问被拒绝

时间:2017-03-20 14:17:19

标签: html ajax xmlhttprequest

编辑:不重复,因为我的问题在所提到的每个浏览器上都失败了; Edge,Chrome,FF等

我有一个 html文件,该文件将在个人计算机上,而不是在http协议上。注意:重要的是它将是该人机器上的html文件。

在javascript中是:

var dataARR = {
    mydata: "No Data"
};

var dataJSON = JSON.stringify(dataARR);
$.support.cors = true;
$.ajax({
    type: "POST",
    url: "http://www.mywebsite.com/exclude.php",
    async: true,
    cache: false,
    contentType: "application/json; charset=utf-8",
    crossDomain: true, // This needs to be true for other people
    data: { myJson: dataJSON },

    success: function (data) {
        var json = eval('(' + data + ')');
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        // Silent error
        var zz = 2;
    }
});

我服务器http://www.mywebsite.com/exclude.php上的文件是测试的基础。

exclude.php

header("Access-Control-Allow-Origin: *"); // To allow cross domain
$arr = ["181K2", "4V419"];
echo json_encode($arr);

如果此人的本地计算机上的html文件是从Edge,Chrome等启动的,则无效。

Edge提供错误XMLHttpRequest: Network Error 0x80070005, Access is denied.

Chrome会显示错误XMLHttpRequest cannot load http://www.mywebsite.com/exclude.php. Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.

Firefox:我不知道如何找到FF错误,因为我一般不在FF中调试,而且系统没有使用它。但是,当我把断点放在最后的error: function (XMLHttpRequest, textStatus, errorThrown) {

部分时

1 个答案:

答案 0 :(得分:1)

  

Chrome提供错误XMLHttpRequest无法加载http://www.mywebsite.com/exclude.php。请求标题字段在预检响应中,Access-Control-Allow-Headers不允许使用Content-Type。

所以:

  1. 响应预检请求,并允许在请求中包含Button
  2. 请勿设置Content-Type
  3. 我建议选项2,因为您没有将请求正文格式化为JSON。