post - 当我提供响应标头时,为什么我的 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");
铬响应
边缘响应
解决方案
您可以看到响应中不包含 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(您正在使用)小写标题名称,但您返回混合大小写。
推荐阅读
- xaml - ActionBar 不会消失
- javascript - 对象内的未定义值
- react-redux - React-Redux 的选择器
- javascript - 根据值过滤 JavaScript 深度嵌套的对象数组
- docker - Docker hub 自动构建因缺少变量而下降
- java - Java:在开关内创建的类的访问对象
- firebase - Cloud Firestore 在事件中返回未定义
- javascript - 事件触发但并非所有代码都被执行
- web-testing - 我可以为我的本地主机网站或离线使用 pagespeed 见解吗?
- prolog - 尝试将兄弟姐妹添加到具有一个孩子的二叉树中的每个节点,以便所有节点都有 2 个或零个孩子。换句话说,没有节点有 1 个孩子