CORS策略已阻止从源站访问XMLHttpRequest(Vue.JS应用程序调用Lumen应用程序)
我正在使用一个Vue.JS应用程序,该应用程序正在调用使用Lumen构建的API。 每当Vue.JS应用程序调用Lumen API时,我总是会遇到以下错误 下面是一个用于内腔CORS的中间件CORS策略已阻止从源站访问XMLHttpRequest(Vue.JS应用程序调用Lumen应用程序),vue.js,cors,lumen,Vue.js,Cors,Lumen,我正在使用一个Vue.JS应用程序,该应用程序正在调用使用Lumen构建的API。 每当Vue.JS应用程序调用Lumen API时,我总是会遇到以下错误 下面是一个用于内腔CORS的中间件 <?php namespace App\Http\Middleware; use Closure; class CorsMiddleware { /** * Handle an incoming request. * * @param \Illumina
<?php
namespace App\Http\Middleware;
use Closure;
class CorsMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
//Intercepts OPTIONS requests
if($request->isMethod('OPTIONS')) {
$response = response('', 200);
} else {
// Pass the request to the next middleware
$response = $next($request);
}
// Adds headers to the response
$response->header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT, PATCH, DELETE');
$response->header('Access-Control-Allow-Headers', $request->header('Access-Control-Request-Headers'));
$response->header('Access-Control-Allow-Origin', '*');
// Sends it
return $response;
}
}
添加后立即解决
header('Access-Control-Allow-Headers: *');
而不是
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
在CORS中间件中。似乎原点设置为*,*
,但它应该只有一个星号。是否在其他地方修改了响应标题?您也不应该在生产中使用星号,除非您希望允许每个网站调用您的API。@ssc-hrep3您好,兄弟,很抱歉没有理解您的意思,您建议采取什么措施?请转到Chrome DevTools中的网络
选项卡,然后单击请求,在选项卡标题
上,您将看到响应标题
。标题访问控制允许原点
应为单个值:*
或https://yourdomain.com
。这个值似乎在后端的某个地方被设置为*,*
。可能是在.htaccess
文件中以及在PHP中设置标头会导致此逗号分隔的标头无效。您需要修复此问题,然后它应该可以工作。从.htaccess文件中删除“头集访问控制允许源”*”。您已经在PHP代码中设置了Access Control Allow Origin头。因此,当您还在.htaccess文件中进行设置时,返回的响应最终会有两个Access-Control-Allow-Origin标头-都具有值“*”。现在在添加标头(“Access-Control-Allow-headers:*”)后解决了这一问题;而不是标头('Access-Control-Allow-Headers:Origin,Content-Type,X-Auth-Token');在CORS中间件中。
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');