编辑:不重复,因为我的问题在所提到的每个浏览器上都失败了; 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) {
答案 0 :(得分:1)
Chrome提供错误XMLHttpRequest无法加载http://www.mywebsite.com/exclude.php。请求标题字段在预检响应中,Access-Control-Allow-Headers不允许使用Content-Type。
所以:
Button
或 Content-Type
我建议选项2,因为您没有将请求正文格式化为JSON。