???????????? no permissions的解决办法 解决网上方法行不通的问题

在遇到此类问题时,百度或者谷歌搜索结果基本都是如下所示方法:

使用adb devices 出现如下:

List of devices attached

???????????? no permissions

同时在DDMS显示设备名也显示????????????,也无法显示进程名,无法查看log

解决方法:

1、设置usb权限

因为ubuntu这样的系统都是默认以非root身份在运行的,要使用usb调试,需要sudo支持。

$ lsusb

Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 010: ID 19d2:1366 ONDA Communication S.p.A. (如果不确定是不是它,就拔掉再插上!呵呵。)

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

列表中,Bus 001 Device 010: ID 19d2:1366 ONDA Communication S.p.A. . 请记录下USB的id信息19d2idVendor1366

首先,创建文件:

$sudo vim /etc/udev/rules.d/70-android.rules

加入以下内容:

SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1366",MODE="0666"

运行命令,重启udev

$sudo chmod a+rx /etc/udev/rules.d/70-android.rules

$sudo service udev restart

2、不需要重启计算机,重新启动adb server下就ok

拔掉usb重新连上再执行:

sudo ./adb kill-server

./adb devices

./adb root (这一步很重要 )

 ./adb devices

List of devices attached 

N880E device

虽说上面的方法可以解决大部分的人的问题,但是随着Android的版本更新很快,还有很多的人上面的方法可能解决不了问题。我就是其中之一,本篇博文也是其中之一。

下面记录一下解决方法:

假如手里有一个Android5.0版本的设备,而PC上/etc/udev/rules.d/路径下的文件需要是70以后数字的文件,或者说不能是51开头的数字,具体定义的规则我没有细究。如果使用了51开头的文件,是可以识别的,但是就是上面所说的问题,无法使用,换成70问题就解决了。

换言之如果Android版本为4.x,那么最好使用51开头的文件。

我的问题是这样解决的,希望对遇到该问题的朋友有所帮助。具体的原因就不细究了,以后有空了再说。





<think>好的,用户想解决跨域PDF文件打印权限的问题,特别是通过CORS配置。首先,我需要回顾一下CORS的基本原理,确保自己理解正确。CORS通过HTTP头来控制不同源的资源访问权限,服务器需要设置响应头来允许特定的域、方法或头信息。 用户的问题涉及到PDF文件的打印权限,这可能是因为PDF文件托管在另一个域,而前端尝试访问并打印时遇到了跨域限制。首先,需要确认服务器的CORS配置是否正确。根据引用[1]、[2]、[3],服务器需要设置Access-Control-Allow-Origin、Access-Control-Allow-Methods等头信息。特别是,如果涉及到需要携带凭证(比如cookies),则必须设置Access-Control-Allow-Credentials为true,并且Access-Control-Allow-Origin不能使用通配符*,必须指定具体域名,如引用[4]中提到的问题。 接下来,针对PDF文件的具体情况,可能需要检查PDF文件的响应头是否包含正确的CORS设置。例如,当通过JavaScript在网页中加载PDF时,如果PDF的URL来自不同源,浏览器会执行CORS检查。这时候,服务器必须为PDF文件的请求返回正确的CORS头。 另外,打印权限可能还涉及到PDF文件本身的权限设置,比如是否允许打印。但这里用户提到的是跨域问题,所以重点应放在CORS配置上。不过可能需要结合两者来看,比如即使CORS配置正确,如果PDF文件本身禁止打印,仍然无法解决。因此需要确认服务器不仅允许跨域访问,还要确保PDF文件没有设置禁止打印的权限。 可能还需要考虑前端如何处理PDF。例如,使用<embed>或<iframe>标签加载PDF时,不同浏览器可能有不同的安全策略。这时候,正确的CORS头是必须的。此外,如果使用PDF.js这样的库来渲染PDF,可能需要额外的配置。 总结解决方案步骤:1. 确保服务器为PDF文件请求设置正确的CORS头,包括允许的来源、方法、允许凭证等。2. 检查PDF文件本身的权限设置,确保允许打印。3. 前端代码中可能需要配置withCredentials为true,特别是在需要携带凭证的情况下。4. 测试不同的浏览器,因为可能存在兼容性问题。 还需要注意,某些服务器可能需要针对OPTIONS预检请求进行处理,确保返回正确的头信息。另外,缓存问题也可能导致CORS配置未生效,可能需要清除缓存或强制刷新。 用户可能遇到的常见问题包括配置了CORS但仍有问题,这时候需要检查是否所有必要的头都正确设置,是否响应了预检请求,以及是否在请求中正确携带了所需的凭证。例如引用[4]中提到的问题,可能因为没有正确设置allowCredentials或域名不匹配导致失败。</think>针对跨域PDF文件打印权限的问题,结合CORS配置的解决方案如下: ### 一、服务器端CORS配置 1. **设置核心响应头** 确保PDF文件所在服务器返回以下HTTP头: ```http Access-Control-Allow-Origin: https://your-frontend-domain.com // 需明确指定前端域名,不能使用* Access-Control-Allow-Methods: GET, OPTIONS // 必须包含请求PDF的方法 Access-Control-Allow-Headers: Content-Type, Authorization Access-Control-Allow-Credentials: true // 若需携带凭证(如Cookies) ``` 示例代码(Node.js): ```javascript app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', 'https://your-frontend-domain.com'); res.header('Access-Control-Allow-Methods', 'GET, OPTIONS'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization'); res.header('Access-Control-Allow-Credentials', 'true'); next(); }); ``` 引用[^1][^3] 2. **处理OPTIONS预检请求** 对跨域请求中的`OPTIONS`方法需单独响应(状态码200): ```javascript app.options('/path/to/pdf', (req, res) => { res.sendStatus(200); }); ``` 引用[^2] --- ### 二、PDF文件权限控制 1. **服务器文件元数据检查** 确保PDF文件未设置禁止打印的权限标记。可通过命令行工具检查: ```bash exiftool -Producer yourfile.pdf | grep 'Permissions' ``` 若输出包含`Printing: no`,需用PDF编辑器修改权限。 2. **强制允许打印的HTTP头** 添加以下头可覆盖部分浏览器的打印限制: ```http Content-Disposition: inline; filename="file.pdf" X-Content-Type-Options: nosniff ``` --- ### 三、前端实现方案 1. **带凭证的请求** 使用`fetch`或`XMLHttpRequest`时需启用凭证模式: ```javascript fetch('https://pdf-server.com/file.pdf', { credentials: 'include' }); ``` 2. **PDF渲染控制** 推荐使用[Mozilla PDF.js](https://mozilla.github.io/pdf.js/)渲染PDF: ```javascript const loadingTask = pdfjsLib.getDocument({ url: 'https://pdf-server.com/file.pdf', withCredentials: true }); ``` --- ### 四、验证流程 1. **CORS配置验证** 通过curl命令测试响应头: ```bash curl -I -H "Origin: https://your-frontend-domain.com" https://pdf-server.com/file.pdf ``` 2. **浏览器控制台检查** 在开发者工具Network面板中确认: - 响应头包含正确的CORS配置 - 没有出现`Cross-Origin Request Blocked`警告 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值