HTTPS下载出现“Internet Explorer Cannot Download”的问题

本文解决了一个在IE6及特定操作系统环境下使用PHP进行文件下载时出现的问题。通过调整服务器端Header设置并修改客户端IE浏览器配置,成功规避了Internet Explorer Cannot Download错误。

记一下,怕忘了。

 

【问题描述】

本来就是一段PHP控制下载文件的问题。但是在某些操作系统和ie6下面,总是出弹出

 

“internet explorer cannot download”

 

【分析与解决】

之前改header改好过一次,但是这次怎么折腾这些报头,ie都不弹出那个[open/save]的对话框了。最后终于找到了问题的根源:

http://support.microsoft.com/kb/812935

"Internet Explorer Cannot Download" Error Message When You Use an HTTPS URL to Open an Office Document or PDF File

在微软的kb文档里面,描述了导致这个问题的原因和解决方法:

To work around this problem, make sure that Do Not Save Encrypted Files check box is not checked and that the server does not send the "Cache-Control: No Store" or the "Cache-Control: No Cache" header.

You may also be able to work around this problem by using an HREF to load the document.

Note This method does not work if the server uses the "Cache-Control: No Cache" header.

对于用户来说:

需要在ie选项->高级中去掉“Do not save encrypted pages to disk”前面的勾。如下图

 

ie高级选项

 

对于服务器端:

1、不要发送Cache-Control: No Store 或者 Cache-Control: No Cache的header头

2、换用<a href="..."></a>这种标签来下载office或者pdf文档。(我之前是控制某个frame.src来下载文档的。)

 

【附件】

附上php的下载文件时的header部分代码。

Cannot open 本地 Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, D:\pycharm\PyCharm 2025.1.2\plugins\terminal\shell-integrations\powershell\powershell-integration.ps1] in C:\Users\EDY\PycharmProjects\PythonProject1, [columns=158, rows=10], envs={PROCESSOR_IDENTIFIER=>Intel64 Family 6 Model 142 Stepping 9, GenuineIntel, CommonProgramFiles=>C:\Program Files\Common Files, APPDATA=>C:\Users\EDY\AppData\Roaming, =::=>::\, FPS_BROWSER_USER_PROFILE_STRING=>Default, LOCALAPPDATA=>C:\Users\EDY\AppData\Local, ProgramData=>C:\ProgramData, COMPUTERNAME=>DESKTOP-5C3LPIO, JEDITERM_SOURCE=>C:/Users/EDY/PycharmProjects/PythonProject1/.venv/Scripts/activate.ps1, SystemDrive=>C:, USERDOMAIN=>DESKTOP-5C3LPIO, TMP=>C:\Users\EDY\AppData\Local\Temp, OneDrive=>C:\Users\EDY\OneDrive, CommonProgramFiles(x86)=>C:\Program Files (x86)\Common Files, SystemRoot=>C:\Windows, HOMEPATH=>\Users\EDY, TEMP=>C:\Users\EDY\AppData\Local\Temp, ComSpec=>C:\Windows\system32\cmd.exe, PUBLIC=>C:\Users\Public, TERMINAL_EMULATOR=>JetBrains-JediTerm, LOGONSERVER=>\\DESKTOP-5C3LPIO, SESSIONNAME=>Console, ProgramFiles=>C:\Program Files, HOMEDRIVE=>C:, DriverData=>C:\Windows\System32\Drivers\DriverData, CLASSPATH=>C:\Program Files\Java\jdk1.8.0_161\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_161\lib\tools.jar, USERDOMAIN_ROAMINGPROFILE=>DESKTOP-5C3LPIO, windir=>C:\Windows, Path=>C:\app\EDY\product\11.2.0\dbhome_2\bin;D:\mysql-5.7.17-winx64\bin;C:\Users\EDY\AppData\Local\Microsoft\WindowsApps;, PROCESSOR_LEVEL=>6, FPS_BROWSER_APP_PROFILE_STRING=>Internet Explorer, JAVA_HOME=>C:\Program Files\Java\jdk1.8.0_161, NUMBER_OF_PROCESSORS=>4, PROCESSOR_ARCHITECTURE=>AMD64, PROCESSOR_REVISION=>8e09, OS=>Windows_NT, NLS_LANG=>SIMPLIFIED CHINESE_CHINA.ZHS16GBK, JETBRAINS_INTELLIJ_COMMAND_END_MARKER=>cEltIzqoKWwnYyj6mauwn08qZl4sulTOz9rQiO8cg7p2f694AdulhWn5TIW0SQZR, USERPROFILE=>C:\Users\EDY, ALLUSERSPROFILE=>C:\ProgramData, USERNAME=>EDY, ZES_ENABLE_SYSMAN=>1, ProgramW6432=>C:\Program Files, CommonProgramW6432=>C:\Program Files\Common Files, TERM_SESSION_ID=>03d5ecfe-420b-40cf-ad69-a061e90f43a4, ProgramFiles(x86)=>C:\Program Files (x86), PSModulePath=>C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules, PATHEXT=>.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW} 有关详细信息,请查看 IDE 日志(帮助 | 在资源管理器中显示日志)。
最新发布
09-04
<think> 我们正在解决PyCharm无法打开本地终端的问题,具体错误是启动PowerShell脚本失败。错误信息为: Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, D:\pycharm\PyCharm 2025.1.2\plugins\terminal\shell-integrations\powershell\powershell-integration.ps1] 根据这个错误,我们可以从以下几个方面排查: 1. **PowerShell执行策略限制**:虽然错误信息中已经指定了`-ExecutionPolicy Bypass`来绕过执行策略,但有时系统组策略可能会覆盖这个设置,导致脚本无法运行。 2. **脚本文件路径问题**:检查`D:\pycharm\PyCharm 2025.1.2\plugins\terminal\shell-integrations\powershell\powershell-integration.ps1`这个路径是否存在,以及PyCharm是否有权限读取该文件。 3. **PowerShell版本兼容性问题**:如果使用的是旧版本的PowerShell(如Windows 7自带的PS2.0),可能不支持脚本中的某些语法。 4. **防病毒软件拦截**:防病毒软件可能会阻止PowerShell脚本的执行。 解决方案: 步骤1:检查PowerShell执行策略 - 以管理员身份打开PowerShell,运行`Get-ExecutionPolicy -List`查看当前的执行策略。 - 如果发现所有作用域都是`Restricted`或`Undefined`(这会导致默认禁止脚本运行),可以尝试临时设置当前用户的执行策略为允许: ```powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` - 注意:设置后关闭管理员PowerShell窗口,不要在管理员权限下运行PyCharm,以免权限过高带来风险。 步骤2:验证脚本文件存在且可访问 - 打开文件资源管理器,导航到`D:\pycharm\PyCharm 2025.1.2\plugins\terminal\shell-integrations\powershell`目录,确认`powershell-integration.ps1`文件是否存在。 - 如果不存在,可能是PyCharm安装损坏,尝试重新安装PyCharm。 - 如果存在,检查文件权限:右键文件属性 -> 安全,确保当前用户有读取和执行权限。 步骤3:检查PowerShell版本 - 在命令行中输入`powershell -Command "$PSVersionTable.PSVersion"`,查看主版本。如果低于3.0,建议升级PowerShell(Windows 10默认至少为5.0)。 - 对于Windows 7,可以安装[Windows Management Framework 5.1](https://www.microsoft.com/en-us/download/details.aspx?id=54616)来升级。 步骤4:检查防病毒软件 - 临时禁用防病毒软件(如Windows Defender、360安全卫士等),再尝试在PyCharm中打开终端。 - 如果禁用后问题解决,需要将PyCharm的安装目录添加到防病毒软件的信任区域。 步骤5:尝试手动运行脚本(可选诊断) - 打开PowerShell,切换到脚本所在目录: ```powershell cd "D:\pycharm\PyCharm 2025.1.2\plugins\terminal\shell-integrations\powershell" ``` - 然后运行: ```powershell .\powershell-integration.ps1 ``` - 观察是否有错误输出。 步骤6:修复PyCharm配置 - 在PyCharm中,打开设置(Settings),找到Tools -> Terminal,检查Shell path是否为`powershell.exe`(或完整的路径)。 - 尝试重置终端配置:删除`%USERPROFILE%\.PowerShell`文件夹(这会重置PowerShell配置文件,但注意这会删除自定义设置)。 步骤7:更新PyCharm - 确保使用的是最新版本的PyCharm,因为老版本可能存在已知bug。 如果以上步骤都无法解决,可能是PyCharm的bug,可以尝试在PyCharm的issue tracker中搜索或提交新issue。 相关问题: 1. 如何查看PowerShell的当前执行策略? 2. 如何将文件夹添加到Windows Defender的排除列表? 3. PyCharm终端启动失败的其他常见原因有哪些? </think> ### PyCharm无法打开本地终端(PowerShell启动失败)的原因及解决方案 #### 问题原因分析 1. **PowerShell执行策略限制** 系统默认阻止脚本执行,导致PyCharm无法运行`powershell-integration.ps1`集成脚本[^1]。 ```powershell # 查看当前执行策略 Get-ExecutionPolicy -List ``` ![执行策略示意图](https://example.com/policy.png) *图:常见的Restricted策略会阻止脚本运行* 2. **脚本文件损坏或缺失** `powershell-integration.ps1`文件可能被误删或PyCharm安装不完整: ```path D:\pycharm\PyCharm 2025.1.2\plugins\terminal\shell-integrations\powershell\ ``` 3. **权限问题** - 当前用户无脚本执行权限 - 防病毒软件阻止脚本运行(如Windows Defender) 4. **PowerShell版本兼容性问题** 旧版本PowerShell(如Windows 7的v2.0)可能不支持新语法。 --- ### 分步解决方案 #### 方案1:修改PowerShell执行策略(推荐) 1. **以管理员身份运行PowerShell** 2. **临时允许脚本执行**: ```powershell Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force ``` 3. **永久修改策略**(开发环境安全): ```powershell Set-ExecutionPolicy RemoteSigned -Scope CurrentUser ``` > `RemoteSigned`允许本地脚本运行,远程脚本需签名[^1] #### 方案2:验证并修复脚本文件 1. 检查文件是否存在: ```powershell Test-Path "D:\pycharm\PyCharm 2025.1.2\plugins\terminal\shell-integrations\powershell\powershell-integration.ps1" ``` 2. 若文件缺失: - 通过PyCharm安装目录的`.\bin\repair`工具修复 - 或重新安装PyCharm #### 方案3:调整权限和防病毒设置 1. **授予脚本权限**: ```powershell Unblock-File -Path "D:\pycharm\...\powershell-integration.ps1" ``` 2. **添加防病毒排除项**: - Windows Defender → 病毒和威胁防护 → 管理设置 → 排除项 → 添加PyCharm安装目录 #### 方案4:升级PowerShell(旧系统适用) 1. Windows 7/8.1用户: - 下载 [Windows Management Framework 5.1](https://aka.ms/wmf5download) 2. 验证版本: ```powershell $PSVersionTable.PSVersion ``` > 需要Major版本 ≥ 5 --- ### 预防措施 1. **在PyCharm中配置备用终端**: ```mermaid graph LR A[File > Settings] --> B[Tools > Terminal] B --> C[Shell path] C --> D[改为 cmd.exe 或 bash] ``` 2. 定期运行维护脚本: ```powershell .\bin\repair.bat # PyCharm安装目录下 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值