【发布时间】:2020-02-18 02:45:47
【问题描述】:
因此,我将图像存储在名为“images”的子目录中的公用文件夹中,并尝试向其中一个发出请求。
但是,我经常收到错误消息;
Access to fetch at 'http://project.test/images/4obrUhRprw6CXSHsHEGEf4Gje2baKoiS7PQJvS4F.jpeg' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
我认为这是因为我使用 VueJS 作为 SPA 前端,就好像我前往 project.test 并提出请求,它工作正常。
我正在使用 laravel-cors 但经过一些研究,我发现这显然不适用于公共文件夹,所以我尝试在公共文件夹中使用 .htaccess 文件,这就是我有;
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://([^.]+\.)?(localhost:8080)$" AccessControlAllowOrigin=$0$1
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header set Access-Control-Allow-Credentials true
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
但是,它似乎仍然不起作用,当我从我的 Vue localhost 而不是 project.test 发出请求时,我得到了同样的错误。我还应该注意我正在使用 Valet。
希望有人可以提供一些帮助。
【问题讨论】:
-
响应的 HTTP 状态码是什么?您可以使用浏览器开发工具中的网络窗格进行检查。是 4xx 还是 5xx 错误而不是 200 OK 成功响应?
-
@sideshowbarker 图片请求的实际响应居然是200,这更让我困惑。
-
你有没有设法解决这个问题?
-
这里有什么解决办法。我遇到了同样的问题。
标签: laravel nginx cors laravel-valet