我需要暂时允许跨域XMLHttpRequest.改变firefox安全设置似乎是要走的路.但我已经试过这个和这个,但他们没有工作.有没有人能够配置这个?谢谢.
如果您不想在开发和测试应用程序期间浪费时间在跨域问题上,可以使用插件强制CORS for FF.
更新:似乎这个插件不再存在.但还有另一种选择 - 这个Chrome扩展程序
对于现代浏览器,您可以尝试以下方法:
https://developer.mozilla.org/en/HTTP_access_control
总之,你需要添加以下到SERVER
响应报头(以下允许访问的 foo.example
):
Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER
Access-Control-Max-Age: 1728000
请注意,X-PINGOTHER
它是由JavaScript插入的自定义标头,并且应该因站点而异.
如果您希望任何站点在Ajax中访问您的服务器,请*
改用.
编辑:
当我在2009年第一次回答问题时,我实际上遇到了同样的问题,我使用服务器端配置解决了这个问题.
那时FF或Chrome上没有插件.
但是,现在我们确实有使用浏览器端插件的替代方案,请检查答案 tsds
你尝试过使用jQuery的ajax请求吗?从版本1.3开始,jQuery支持某些类型的跨域ajax请求.
引用上面的参考:
注意:当'script'或'jsonp'是dataType时,所有远程(不在同一域)请求都应指定为GET(因为它使用DOM脚本标记加载脚本).需要XMLHttpRequest对象的Ajax选项不适用于这些请求.完成时调用complete和success函数,但不接收XHR对象; 不调用beforeSend和dataFilter函数.
从jQuery 1.2开始,如果指定了JSONP回调,则可以加载位于另一个域的JSON数据,这可以这样做:"myurl?callback =?".jQuery自动替换?使用正确的方法名称来调用,调用指定的回调.或者,如果将dataType设置为"jsonp",则回调将自动添加到您的Ajax请求中.
这就是事情,没有办法"暂时"禁用跨域XMLHttpRequest,如果你可以暂时禁用它,那么它可以永久禁用.这是现代AJAX编程中一个相当普遍的问题,并且通常使用称为跨域脚本的技术来解决.
这里的想法是,如果你调出一个跨域脚本,它会返回JavaScript(JSON)结果,然后传递给你的一个函数.
下面是一些示例代码,用于说明从JavaScript代码角度看它的外观:
function request_some_data() { var s = "http://my.document.url.com/my_data?p1=v1&p2=v2&callback=myfunc"; try { try{ document.write(""); } catch(e){ var x = document.createElement("script"); x.src = s; document.getElementsByTagName("head")[0].appendChild(x); } } catch (e) { alert(e.message); } }
然后,您将在代码中定义一个接收数据的函数,并在服务器中"处理"回调案例,这里是客户端JavaScript:
function myfunc(data) { alert(data); }
在服务器端,这里我给出了一个PHP示例,但这可以在Java中轻松完成,也可以在服务器端技术中实现:
请注意,您在服务器端生成的内容最终会成为在客户端执行的一些JavaScript.