我有一个简单的表单,其中只包含一个我需要解析的php
输入。
我有一个位于不同服务器上的header("Access-Control-Allow-Origin: *");
header("Content-Type: application/x-www-form-urlencoded;charset=UTF-8;");
处理程序。我有这些标题:
new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost/ajax.php', true);
xhr.setRequestHeader("Content-type", "multipart/form-data");
let post = 'ajaxquery=psScript&config=' + JSON.stringify({
path_to_include: 'include.php'
});
xhr.send(post);
xhr.addEventListener('load', () => {
resolve(JSON.parse(xhr.response));
})
xhr.addEventListener('error', () => {
reject();
});
}).then((response) => {
console.dir(response);
});
这是我的ajax查询:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
如标题所述,它以xhr.setRequestHeader("Content-type", "multipart/form-data");
回复。虽然我改变了这个:
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
对此:
./.gitignore
将发送数据。但是这种方式,我想,我无法将文件发送到服务器。
对我来说这似乎是一种奇怪的行为。我该如何解决这个问题?为什么会这样?
答案 0 :(得分:2)
在您的php服务器中,您将标题设置为header("Content-Type: application/x-www-form-urlencoded;charset=UTF-8;");
,因此如果您尝试将内容类型设置为multipart/form-data
,则不会允许。
您需要在服务器中设置此标头值
header("Access-Control-Allow-Origin: *");
header("Content-Type: multipart/form-data;charset=UTF-8;");
答案 1 :(得分:0)
补充说:
Header set Access-Control-Allow-Origin "*"
到我的.htaccess
文件。这似乎解决了这个问题。