【发布时间】:2019-08-18 07:29:18
【问题描述】:
我有一个简单的带有 axios 到 php 脚本的 post 请求,它呈现一些 pdf 并且应该返回一个字符串。
现在我得到了这个错误:
Access to XMLHttpRequest at 'IP:7580/pdfgen/pdfGen.php' from origin 'http://localhost:8080' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.
我在我的 php 文件中设置了这个:
<?php
error_reporting(E_ALL);
header('Access-Control-Allow-Origin: *');
没有任何变化。也试过这个:
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, X-Requested-With");
也没有变化。
我的 axios 调用如下所示:
axios.post("http://IP:7580/pdfgen/pdfGen.php", this.state)
.then(response => {
report = {...this.state.report};
report.createdAt = reportCreatedAt;
window.open(response.data);
this.setState({report: report, pdf: response.data});
console.log(response);
})
什么可以解决这个问题?
提前致谢
【问题讨论】:
-
您可能必须在
php.ini文件中设置Access-Control-Allow-Headers并重新启动 Web 服务器才能使其正常工作。过去我在尝试使用header时遇到过问题标记..仅仅因为您必须在足够高的级别上允许它,以使您的所有包含/要求也被“允许” -
在 php.ini 中应该是什么样子?
-
我弄错了——我必须在服务器端允许它——如果您使用的是 Apache ..您可以使用 .htaccess 文件或 vHost 配置来允许 .. 添加 @987654329 @ 到文件.. 然后你必须确保启用了标题
a2enmod headers然后重新启动.. -
@Zak — PHP 程序 do 运行服务器端。应该不需要涉及 apache 或 php 配置编辑。
-
我的设置一定是不同的.. 我必须做以下事情:enable-cors.org/server_apache.html -- 是否不必通过网络 服务器 来访问 php 模块 ?