我在公共目录下有 PDF 文件。我可以通过访问浏览器上的链接来访问它们,并且工作正常。
\n但是,当我尝试嵌入 PDF 文档时,FranckFreiburger/vue-pdf 我得到:
CORS 标头 \xe2\x80\x98Access-Control-Allow-Origin\xe2\x80\x99 缺失
\n这是我的 cors.php:
\n<?php\n\nreturn [\n\n \'paths\' => [\'*\'],\n\n \'allowed_methods\' => [\'*\'],\n\n \'allowed_origins\' => [\'*\'],\n\n \'allowed_origins_patterns\' => [],\n\n \'allowed_headers\' => [\'*\'],\n\n \'exposed_headers\' => [],\n\n \'max_age\' => 0,\n\n \'supports_credentials\' => false,\n\n];\n\nRun Code Online (Sandbox Code Playgroud)\n这是我的 kernel.php:
\nprotected $middleware = [\n \\Fruitcake\\Cors\\HandleCors::class,\n ...\n];\nRun Code Online (Sandbox Code Playgroud)\n我也尝试删除整个包并像这样使用普通 php,但它仍然无法正常工作:
\n引导程序.php
\n<?php\n\nheader(\'Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS\');\nheader(\'Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token, Authorization, Accept,charset,boundary,Content-Length\');\nheader(\'Access-Control-Allow-Origin: *\');\nRun Code Online (Sandbox Code Playgroud)\n编辑
\n\n\nCORS 不起作用的原因是因为您的 PHP 代码都没有针对静态文件运行。
如果您使用 Apache,请查看public/.htaccess它包含的内容:
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [END]
Run Code Online (Sandbox Code Playgroud)
如果您继续使用 Nginx,并查看位于 中的配置/etc/nginx/sites-available,它应该包含:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
Run Code Online (Sandbox Code Playgroud)
无论哪种情况,上述基本上意味着,如果请求不是目录或其中的文件,public则运行index.php.
您有几个选择:
您可以修改服务器配置,为某些或所有静态文件启用 CORS:
Route::get('files/my-example-file.pdf', function () {
return response()->file($path);
});
Run Code Online (Sandbox Code Playgroud)
请记住路径应该是绝对路径,例如'/home/vagrant/code/my-project/storage/app/sample.pdf
还要记住以某种方式将 CORS 中间件应用到路由(例如通过中间件组)。
现在 CORS 中间件应该运行。
| 归档时间: |
|
| 查看次数: |
3191 次 |
| 最近记录: |