伺服器端解決跨域訪問
阿新 • • 發佈:2018-12-10
跨域是頁面js請求ajax,js所在html的url與請求api,不在同一個域名下,跨域解決的思路。
1、伺服器端響應頭允許請求的url,即響應輸出允許訪問的域名;
2、請求由伺服器轉發,使用閘道器或者nginx對請求進行重定向。
具體方案:
1、php
在responce的header中輸出
下面是laravel的修改方法,首先定義一個 Cors 類,然後在Kernel中的中介軟體配置中加入這個類。
namespace Uas\Http\Middleware; use Closure; class Cors { /** * Create a new middleware instance. * * @param \Illuminate\Contracts\Auth\Factory $auth */ public function __construct() { } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * * @return mixed */ public function handle($request, Closure $next, $guard = null) { $headers = [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'GET, HEAD, POST, PUT, DELETE', 'OPTIONS', 'Access-Control-Allow-Credentials' => 'false', 'Access-Control-Max-Age' => '60', 'Access-Control-Allow-Headers' => 'Origin, X-Requested-With, Content-Type, Accept, Authorization', ]; if ($request->isMethod('OPTIONS')) { return response(null, 200, $headers); } $response = $next($request); foreach ($headers as $key => $value) { $response->header($key, $value); } return $response; } }
protected $middlewareGroups = [ 'web' => [ \Uas\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \Uas\Http\Middleware\Cors::class, ], ];
2、springboot