Ste*_*eve 6 laravel vue.js axios
我正在尝试向 ERP API 发出请求,并收到以下响应:
从源“http://connector.test”访问“http://ip:8082/auth”处的 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:无“访问控制” -Allow-Origin'标头存在于请求的资源上。
虽然在我的请求中有一个标头 Access-Control-Allow-Origin:
getAuth() {
axios.post('http://'+this.ip + '/auth/', {
headers: {
"Content-Type": "application/json",
"Cookie": this.sessionid,
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, PATCH, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers": "Origin, Content-Type, X-Auth-Token, Authorization, Accept,charset,boundary,Content-Length"
},
data: {
username: this.username,
password: this.password
}
}).then(response => {
this.getItems();
})
},
Run Code Online (Sandbox Code Playgroud)
Cors.php
'paths' => ['*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
Run Code Online (Sandbox Code Playgroud)
js/bootstrap.js
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
window.axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*';
window.axios.defaults.headers.common['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS, PUT, DELETE';
Run Code Online (Sandbox Code Playgroud)
添加了我自己的中间件
中间件/cors.php
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE,
OPTIONS');
Run Code Online (Sandbox Code Playgroud)
将其添加到 kernel.php $routeMiddleware 然后 web.php
Route::get('/', [App\Http\Controllers\MainController::class, 'index'])->middleware(Cors::class);
Run Code Online (Sandbox Code Playgroud)
请求标头
Request URL: http://ip:8082/auth
Referrer Policy: strict-origin-when-cross-origin
Provisional headers are shown
Accept: application/json, text/plain, */*
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin: *
Content-Type: application/json;charset=UTF-8
Referer: http://connector.test/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
X-Requested-With: XMLHttpRequest
Run Code Online (Sandbox Code Playgroud)
使用 PHP Curl 在后端执行请求效果很好,但我想让它在前端使用 Vue 工作。
小智 3
Web 浏览器具有安全功能,可以阻止对网站的大规模 DOS 攻击。简而言之,任何在 X 上运行的代码都无法请求 Y 上的资源,除非 Y 明确允许 X 请求它。这是通过 Access-Control-Allow-Origins 标头完成的。
您必须将其添加到您的网络服务器或后端代码中。
归档时间: |
|
查看次数: |
45657 次 |
最近记录: |