在 HTTPS 上部署 laravel 项目并在跨域请求期间使用正确的 href 加载内容
Posted
技术标签:
【中文标题】在 HTTPS 上部署 laravel 项目并在跨域请求期间使用正确的 href 加载内容【英文标题】:Deploy laravel project on HTTPS and loading content with correct href during cross-origin requests 【发布时间】:2018-12-08 14:33:55 【问题描述】:我有下一个问题。我将laravel project
部署到https\ssl
域上的服务器。它加载“OK”而不重写.httaccess
文件,因为我有预配置nginx
设置。但是,当我尝试从其他域with cross-origin request
访问我的“API”时,我收到了错误"Blocked loading mixed active content “http://xxxx.xxx“"
。你怎么看它返回"http"
主机错误,然后用CORSCross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://xxxxx.xxx. (Reason: CORS request did not succeed).
向我发送错误。
我尝试在中间件控制器中强制 URL,使用 laravel-cors
库,但没有效果。我不认为 CORS 有这个问题,我认为配置中间件或 api-middleware 有问题。对于 API,我使用 Dingo API
。
【问题讨论】:
【参考方案1】:所有问题都在hrefs(links)
,如果你在前端写href
,比如https://site/api/news/,它会收到错误,但是当你写它像https://site/api/news这没关系...你需要删除最后一个'/'
. API Frameworks
认为您想从文件夹中获取所有数据,因为它会阻止它。是'Wrong endpoint issue'
【讨论】:
【参考方案2】:在您的中间件中,您需要设置标题。创建一个中间件类并将以下内容放在句柄方法中:
public function handle($request, Closure $next)
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
然后将其添加到app/Http/Kernel.php 中的$routeMiddleware 中。然后将该中间件用于您需要的任何路由。
【讨论】:
我已经包含了CORS middleware
。出现'Blocked loading mixed active'
错误,因为在路径中我在路径末尾使用了slashes
。为了避免这个问题,你应该修剪它。然后我发现尝试将数据写入DB
时出现新错误。当我发送POST
请求而不尝试向DB
写入内容时,我返回Success status 200
,但是当我尝试向其写入内容时 - 我收到下一个错误"Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.xxx.xxx/xxxx. (Reason: CORS request did not succeed)."
。我该如何解决?
您需要发布您的控制器和路由器代码。您确定将中间件应用于路由吗?标题是什么样的?以上是关于在 HTTPS 上部署 laravel 项目并在跨域请求期间使用正确的 href 加载内容的主要内容,如果未能解决你的问题,请参考以下文章
如何在 VPS 上部署 Laravel 项目以及如何管理更改?
如何在 digitalocean 中显示 laravel api 错误?