我有PDF文件在公共目录下。我可以通过访问浏览器上的链接来访问它们,而且它工作得很好。
然而,当我尝试在FranckFreiburger/vue-pdf
中嵌入PDF文档时,我得到:
CORS标头“访问控制-允许-来源”缺失
这是我的cors.php:
<?php
return [
'paths' => ['*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];
下面是我的内核.php:
protected $middleware = [
\Fruitcake\Cors\HandleCors::class,
...
];
我也试过删除整个包,像这样使用普通的php,但仍然不起作用:
bootstrap.php
<?php
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token, Authorization, Accept,charset,boundary,Content-Length');
header('Access-Control-Allow-Origin: *');
编辑
附加的http请求
3条答案
按热度按时间13z8s7eq1#
CORS不工作的原因是因为没有为静态文件运行PHP代码。
如果你使用的是Apache,看看它包含的
public/.htaccess
:如果你在Nginx上查看位于
/etc/nginx/sites-available
中的配置,它应该包含:在任何一种情况下,上面的基本意思是,如果请求不是
public
中的目录或文件,则运行index.php
中的脚本。您有几个选项:
方法1:调整服务器配置
您可以修改服务器配置,以便为某些或所有静态文件启用CORS:
方法二:通过应用程序提供文件
1.将文件移动到存储中的某个位置
1.创建一个新的路由和控制器,如下所示:
请记住,路径应该是绝对路径,如
'/home/vagrant/code/my-project/storage/app/sample.pdf
另外,请记住以某种方式将CORS中间件应用于路线(例如,通过中间件组)。
现在,CORS中间件应该运行。
abithluo2#
在我的示例中,我按照Yahya Uddin answer中的链接查找Apache Cors configuration,我唯一需要做的就是使用此命令启用Mod_Headers
并重新启动Apache
wa7juj8i3#
如果您不想将文件存储在服务器上
您可以在返回PDF响应之前添加标题
Access-Control-Allow-Origin
。使用mpdf的示例: