【问题标题】:403- Forbidden for file in PHP for some request403- 某些请求的 PHP 文件被禁止
【发布时间】:2016-02-12 17:58:46
【问题描述】:

我的 PHP 页面脚本响应 403-访问禁止某些 http 请求而某些请求正确响应。

对于以下请求(通过 ajax),我得到 403-Access 被禁止

POST http://xxxx./xxx/xxx/xxx/xxxx/interaction/practitioner HTTP/1.1
Host: xxxx
Connection: keep-alive
Content-Length: 2520
Accept: */*
Origin: http://xxx
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.267 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://xxxx./xxx/xxx/xxx/xxxx/index.php
X-Citrio-Timestamp: Wht/CLSj01IhGLSPNfWemGXwGww= 2016-02-12T17:41:39.961Z
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: PHPSESSID=c83cae9c3bc88a4b8ff7ea3c3b279a22

{JSON DATA}

但是,对同一页面的另一个请求使用不同的 JSON DATA 正确响应。

意味着,对于特定数据,它禁止 403 访问,而对于某些数据,它正确响应。

php 脚本包含 10-20 个函数,但是,两个请求都调用同一个函数.. {Register user with timetable ids.}

【问题讨论】:

  • 能否请您出示相关的服务器代码?通常当服务器响应 403 时,这是因为服务器被编码为响应 403。
  • 您的请求是否从/发送到同一个域/子域?也许你需要使用 CORS 请求。
  • 是的...在两个请求中都请求相同的文件。只有 JSON 数据不同。两个请求都调用相同的方法......唯一的区别是第二个请求(403-Forbidden)包含一些额外的数据而不是之前的请求(工作正常)。实际上它是一个客户端应用程序并且在交付时工作正常......但现在 2 个月后出现了这个问题......
  • 你能测试吗?只需在您的服务器端脚本上添加header('Access-Control-Allow-Origin: *');,如果它可以工作,可能意味着您必须从另一个域或子域访问脚本。希望它有所帮助,但也许我错了

标签: javascript php json ajax


【解决方案1】:

这不是一个真正的技术答案,但我询问了我们共享多站点经销商托管的提供商,ModSec 规则是否可能是导致此问题的原因,即 ajax POST 的不一致阻止,失败时返回 403。他们(NetHosted:始终提供出色的支持)查看了他们的结局,然后禁用了他们可以看到正在触发的几个 ModSec 规则。这就是解决办法。

【讨论】:

    猜你喜欢
    • 2015-04-15
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2017-11-28
    • 2014-10-31
    • 2016-11-24
    • 2012-02-03
    相关资源
    最近更新 更多