发生场景:
前端调用一次接口 但是后台添加接口 被调用2次添加。OPTIONS请求执行了一次程序;然后post也执行了一次程序;
前端使用:angular, NG-ZORRO 的 nz-upload 插件
后台使用:thinkphp5
报错信息
Access to XMLHttpRequest at 'http://127.0.0.1:8080/public/index.php/install/Userapi/uploadImg' from origin 'http://localhost:4200' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
POST http://127.0.0.1:8080/public/index.php/install/Userapi/uploadImg net::ERR_FAILED
问题描述:因为在进行跨域请求的时候,前端会先options请求接口,去试探是否支持跨域,支持跨域之后,在进行正式的post请求添加。
解决方法:请求做限制,options请求不执行接口功能。
PHP代码,在方法中加入以下代码。这是我所遇到的问题以及解决办法。
if (strtolower($_SERVER['REQUEST_METHOD']) == 'options') {
exit;
}
方法来自:php接口 前端调用一次 服务端被请求了2次 (php 跨域请求执行了两次接口 OPTIONS(预处理)导致)_ouxiaoxian的博客-优快云博客