在Security.SE上回答this question时,我意识到可能需要一种方法来禁用所有域的AJAX请求,包括原始域本身。如果我有一个托管用户提交的JS的站点并且我不希望JS能够通过现代浏览器上的AJAX访问我的站点(这类似于禁止跨域AJAX,除非设置在报头)
有什么方法可以在PHP或Apache中禁用同源AJAX?我正在寻找类似于Access-Control-Allow-Origin: *
标题(通过header()
或.htaccess
设置)的内容,但效果恰恰相反 - 浏览器被告知不允许任何 AJAX调用页面。
我知道最终用户总是可以自己搞乱标题并允许AJAX。我不介意,我想防止不经意的访问者在上传的代码中受到同源AJAX的影响。
答案 0 :(得分:2)
大多数JavaScript库会将HTTP_X_REQUESTED_WITH
标头设置为xmlhttprequest
。所以寻找这个并阻止这样的请求可能是你能得到你想要的最接近的。否则,正如您可能知道的那样,XHR请求与“常规”请求没有区别。
答案 1 :(得分:1)
这可能不是您问题的准确答案,但您可以在插入用户JS之前覆盖XMLHttpRequest对象:
window.XMLHttpRequest = false;
// Insert users JS here