无法发送CORS查询:响应“No'Access-Control-Allow-Origin'标头”

时间:2016-12-12 05:31:12

标签: javascript php ajax

我有一个简单的表单,其中只包含一个我需要解析的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

将发送数据。但是这种方式,我想,我无法将文件发送到服务器。

对我来说这似乎是一种奇怪的行为。我该如何解决这个问题?为什么会这样?

2 个答案:

答案 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文件。这似乎解决了这个问题。