【问题标题】:jquery ajax with servlet带有servlet的jquery ajax
【发布时间】:2010-12-12 19:58:59
【问题描述】:

在使用带有 jquery ajax 的 servlet 时遇到问题。当我将包含 js 代码的 html 文件与 servlet 放在同一个项目中时,它将起作用。但是,当我在另一台机器上使用这个 html 并使用 URL:http://192.168.1.5:8084/****/Servlet 进行 ajax 时,我什么也得不到。

$.ajax({
   url:'http://192.168.1.5:8084/****/Servlet',
   data: ajaxdata,
   type:'GET',
   dataType:'text/html',
   //contentType: "text/html",
   success:function(json) { }
});

所以有什么想法吗?谢谢。

【问题讨论】:

    标签: jquery ajax servlets


    【解决方案1】:

    如果您可以控制 servlet,请设置 HTTP Access-Control 标头。这样,您可以从服务器端控制是否允许触发 XMLHttpRequest 的客户端处理响应。任何最近的(和体面的)网络浏览器都会采取相应的行动。

    这是一个例子:

    response.setHeader("Access-Control-Allow-Origin", "*"); // Everone may process the response.
    response.setHeader("Access-Control-Allow-Methods", "GET"); // Commaseparated string of allowed request methods.
    

    另一种选择是JSONP,另见this article

    【讨论】:

      【解决方案2】:

      !拼图

      这在ajax中称为同源策略问题,如果两者在同一台服务器上,它将起作用。

      阅读此链接,它非常好

      Ways to circumvent the same-origin policy

      http://www.petefreitag.com/item/703.cfm
      

      在stack over flow中搜索你会得到很多答案

      【讨论】:

      • 哦。多谢。我是否必须使用真正的 web 服务而不是 servlet 来实现这样的事情?例如,您可以从 Web 服务 URL 获取一些数据
      • 我明白了。这是关于ajax而不是服务。 Ajax 有这种“同源”政策。但我仍然可以访问 servlet 来获取我需要的一些数据。
      【解决方案3】:

      您不能使用 AJAX 向其他站点发送请求。

      【讨论】:

        【解决方案4】:

        这是因为您正在制作跨域 ajax。浏览器倾向于禁止这样做,因为这是一个安全问题。

        herehere

        (很明显,当它们在同一台服务器上时,您不会有任何问题)

        【讨论】:

          猜你喜欢
          • 2012-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-07
          • 2014-03-26
          • 2014-09-20
          • 1970-01-01
          相关资源
          最近更新 更多