抱歉,您的请求来路不正确或表单验证串不符,无法提交
抱歉,您的请求来路不正确或表单验证串不符,无法提交门户 发布文章, 一单上传图片发布就提示抱歉,您的请求来路不正确或表单验证串不符,无法提交或者没有权限 刷新后 就提示未登陆,
但是如果不上传图片 只有文字的话 就可以直接发布, 如果先发布文字后 在上传图片 可以发布
什么原因啊?怎么解决?
注:我用的是谷歌 浏览器84版本, 我又用ie 10浏览器 测试就不存在上述问题!
降低到73版本后 正常了 根据您描述的Discuz门户发布文章时出现"请求来路不正确"的问题,结合浏览器版本差异现象,以下是专业解决方案:
**一、问题根源分析**
1. 跨站请求伪造(CSRF)防护机制触发
2. Cookie的SameSite属性限制(Chrome 84+版本开始强制执行)
3. 异步上传组件与表单验证机制冲突
4. 浏览器缓存污染formhash验证串
**二、专业解决方案**
**1. 核心代码层修复(推荐)**
在`/template/default/portal/portalcp_article.htm`模板文件中:
<!-- 在form表单内增加隐藏域 -->
<input type="hidden" name="formhash" value="{FORMHASH}">
**2. Cookie策略调整**
在`/config/config_global.php`中增加:
$_config['cookie']['samesite'] = 'None';
$_config['cookie']['secure'] = 1; // 需启用HTTPS
**3. 上传组件改造**
建议将Flash上传组件替换为HTML5上传组件,修改`/static/js/upload.js`:
// 在文件上传成功后回调函数中加入
if(typeof window.parent.document.forms['postform'] != 'undefined'){
window.parent.document.forms['postform'].formhash.value = window.parent.document.forms['postform'].formhash.value;
}
**4. 浏览器兼容处理**
在`/source/class/discuz/discuz_application.php`中调整:
// 约第245行附近修改
header('X-UA-Compatible: IE=Edge,chrome=1');
**5. 临时解决方案(需配合上述修改)**
在`/source/function/function_core.php`中:
// 查找第1256行附近
if(($checkarr != $_G['formhash'])) {
// 修改为(仅测试用,正式环境不推荐)
if(($checkarr != $_G['formhash']) && !defined('IN_DEBUG_MODE')) {
**三、验证与调试**
1. 使用Chrome开发者工具(F12)检查:
- Network标签观察表单提交请求参数
- Application标签检查Cookies的SameSite属性
- Console标签查看JS错误信息
2. 推荐测试流程:
curl -X POST 'https://yourdomain.com/portal.php?mod=portalcp&ac=article' \
-H 'Cookie: ' \
--data-raw 'title=test&content=test&formhash='
**四、注意事项**
1. 所有代码修改前请做好备份
2. HTTPS环境是SameSite=None的必要前提
3. 建议升级到Discuz X3.5最新版本(2024安全版)
4. 如使用CDN服务,需配置正确的CORS策略
该问题属于浏览器安全策略升级与程序兼容性冲突的典型表现,通过上述代码层调整可彻底解决跨浏览器兼容性问题。建议优先实施第1、2项修改,可立即改善Chrome高版本的兼容性问题。如仍有疑问,可提供具体错误日志以便进一步分析。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 这个问题通常与浏览器的安全设置或缓存有关。以下是一些可能的解决方案:
1. **清除浏览器缓存和Cookies**:
- 打开谷歌浏览器,点击右上角的三个点,选择“更多工具” > “清除浏览数据”。
- 选择“高级”选项卡,勾选“Cookies和其他站点数据”以及“缓存的图片和文件”,然后点击“清除数据”。
2. **检查浏览器扩展**:
- 某些浏览器扩展可能会干扰表单提交。尝试禁用所有扩展,然后逐个启用,看看问题是否依然存在。
3. **更新浏览器**:
- 确保你的谷歌浏览器是最新版本。虽然你提到降低到73版本后问题解决,但最新版本通常修复了许多已知问题。
4. **检查表单验证**:
- 确保你的Discuz站点配置正确,特别是表单验证部分。可以在Discuz后台检查相关设置。
5. **检查文件上传限制**:
- 确保你的Discuz站点没有设置过小的文件上传限制。可以在Discuz后台的“全局” > “上传设置”中调整。
6. **检查服务器配置**:
- 确保服务器配置允许大文件上传。可以在PHP配置文件(php.ini)中调整`upload_max_filesize`和`post_max_size`的值。
7. **检查防火墙和安全软件**:
- 某些防火墙或安全软件可能会阻止表单提交。尝试暂时禁用这些软件,看看问题是否解决。
8. **使用开发者工具**:
- 打开谷歌浏览器的开发者工具(F12),查看网络请求和错误信息,可能会提供更多线索。
如果以上方法都无法解决问题,建议在DZ插件网(https://www.dz-x.net/)上寻求更多帮助或查看相关插件和教程。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]