我的后端在子域中运行。当我的网站通过http协议运行时,一切正常。但是,一旦我将网站移至https,我的POST请求便停止工作。以下是我在控制台上遇到的错误。
从原点“ https://backend.example.com/api/handle-enquiry/”到“ https://example.com”的XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态。
我的GET请求工作正常。
注意:我使用firefox的开发人员工具检查了我的网络请求标头,其中显示了404的预检OPTIONS请求。
我尝试将以下代码放入我的.htaccess文件中
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
已解决:但是我仍然对解决方案感到困惑。我只是更改了配置标头的方式。之前我将它们放在laravel后端的index.php文件中。现在,我只是在.htaccess文件中配置它们。它有什么不同?我想念什么?
按照我更新的.htaccess配置
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
答案 0 :(得分:-1)
需要将其设置为always
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS"
摘自:https://serverfault.com/questions/231766/returning-200-ok-in-apache-on-http-options-requests