我正在使用单独的 Vue.js Front 在 laravel 中开发自己的 ERP。有一段时间,我在装有 apache 的 Windows 服务器上工作,它运行良好。一开始设置有点棘手,因为我没有从 apache 运行 vue,而是使用 npm run dev,因此使用它自己的开发服务器。我能够构建它并在从端口 80 提供服务时对其进行测试。
到目前为止,一切都很好。
我想按照流程进行操作并为生产进行示例安装,然后将所有内容迁移到 centOS,在这里我在前端遇到了 CSRF 警告。
如果你想知道的话,我已经在 Windows 设备上启用了 cors 标头,但我不需要设置任何其他内容,如下所示:
标头设置 Access-Control-Allow-Origin“*”
在我的目录设置中,当您遇到 CSRF 预检问题时,通常会在这里提供建议。
这是我在 centOS 中遇到但在 Windows 中不会遇到的错误:
访问 XMLHttpRequest 'http://192.168.2.100:8029/api/oauth/获取令牌' 来自起源 'http://192.168.2.100' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:'Access-Control-Allow-Origin' 标头包含多个值 '*,http://192.168.2.100',但只允许一个。
PS 我在 apache 提供的 8029 端口上提供 laravel。我正在监听 80 和 8029 端口(vue 前端和 laravel 后端)
这是虚拟主机文件:
<VirtualHost *:8029>
ServerAdmin emailhere
DocumentRoot "/var/www/html/backendpathhere/"
ServerName webservices7.zeintek.com
ServerAlias www.webservices7.zeintek.com
<Directory "/var/www/html/backendpathhere/">
AddHandler cgi-script .cgi .pl .py
Options Indexes Includes FollowSymLinks ExecCGI
AllowOverride All
Order Allow,Deny
Allow From All
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin emailhere
DocumentRoot "/var/www/html/frontendpathhere/"
<Directory "/var/www/html/frontendpathhere/">
AddHandler cgi-script .cgi .pl .py
Options Indexes Includes FollowSymLinks ExecCGI
Options +ExecCGI
AllowOverride All
Order Allow,Deny
Allow From All
</Directory>
</VirtualHost>
答案1
当我完成此操作时,我已经在自己的 Apache 处理程序(用 Perl 编写)中对响应进行了编码,因此我不清楚它在 Apache 中是如何设置的,而且我无法在您的配置文件中看到它。我看到您已启用 .pl .py 和 .cgi,因此您可能有自己的代码参与响应飞行前请求。
响应预检请求的是什么?这就是生成无效响应的部分。
检查请求和响应(浏览器开发人员工具中的网络查看器)并与 RFC 交叉引用。不同的服务器配置将具有不同的选项,因此,如果您使用 Apache 配置,请确保您已了解如何正确设置选项。
当我完成这项工作时,我花了一点时间来了解我们将如何构建交叉引用域数据模型,但我不记得让代码运行起来特别困难。
答案2
非常抱歉。我有一个特定于每个服务器部署的 backendurls 文件,但我访问到了错误的端点。我的 Linux 服务器访问的是 Windows 开发服务器。
写出来实际上帮助我解决了这个问题。