有没有办法可以禁用或阻止同源AJAX?

时间:2013-02-22 09:04:46

标签: php javascript ajax apache

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

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

window.XMLHttpRequest = false;

// Insert users JS here