2

在 Security.SE 上回答这个问题时,我意识到可能需要一种方法来禁用来自所有域的 AJAX 请求,包括原始域本身。如果我有一个托管用户提交的 JS 的站点并且我不希望该 JS 能够在现代浏览器上通过 AJAX 访问我的站点,这将很有用(类似于禁止跨域 AJAX 的方式,除非在标题)

有什么方法可以在 PHP 或 Apache 中禁用同源 AJAX?我正在寻找类似于 Access-Control-Allow-Origin: *标题的东西(通过header()or设置.htaccess),除了效果相反 - 浏览器被告知不允许对页面进行任何AJAX 调用。

我知道最终用户总是可以自己弄乱标题并允许 AJAX。我不介意,我想防止不知情的访问者在上传的代码中受到同源 AJAX 的影响。

4

2 回答 2

2

大多数 JavaScript 库会将HTTP_X_REQUESTED_WITH标头设置为xmlhttprequest. 所以寻找这个并阻止这样的请求可能是你能得到的最接近你想要的东西。否则,您可能知道,XHR 请求与“常规”请求没有什么不同。

于 2013-02-22T09:17:58.120 回答
2

这可能不是您问题的确切答案,但您可以在插入用户 JS 之前覆盖 XMLHttpRequest 对象:

window.XMLHttpRequest = false;

// Insert users JS here
于 2013-02-22T09:36:53.120 回答