首页 > 解决方案 > 当我提供响应标头时,为什么我的 HTTPRequest 被 Cors 阻止?

问题描述

我的 Cpanel 文件系统中有一个 PHP 脚本,它试图将表单插入数据库。此表单包含一些字符串和 1 个大小不同的二进制字符串。

当我尝试在我的文件系统中发布到这个 PHP 脚本时,我收到以下错误。

XMLHttpRequest has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

我添加了以下标题,但它似乎不起作用。它发生在 Chrome 和 Firefox 中,但 POST 在 Edge 中运行良好。

header("content-type: multipart/form-data");
header("access-control-allow-origin, *");
header("access-control-allow-credentials, true");
header("access-control-allow-methods, get,head,options,post,put");
header("access-control-allow-headers, access-control-allow-headers, origin,accept, x-requested-with, content-type, access-control-request-method, access-control-request-headers");

铬响应

在此处输入图像描述

边缘响应

在此处输入图像描述

标签: postcorshttp-headers

解决方案


您可以看到响应中不包含 CORS 标头。

在我看来,您的 PHP 语法是错误的:

header('Content-type: multipart/form-data');
header("Access-Control-Allow-Origin", "*");
header("Access-Control-Allow-Credentials", "true");
header("Access-Control-Allow-Methods", "POST");
header("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");

肯定应该是:

header('Content-type: multipart/form-data');
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers");

也不确定不同的大小写是否重要,因为 HTTP/2(您正在使用)小写标题名称,但您返回混合大小写。


推荐阅读