首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送CORS从javascript web-service客户端发送请求返回http 405错误

发送CORS从javascript web-service客户端发送请求返回http 405错误
EN

Stack Overflow用户
提问于 2015-08-18 08:28:17
回答 2查看 174关注 0票数 2

几天前,我实现了一个web服务(客户机和服务器)。客户端用XMLHttpRequest()发送请求,没有问题。然而,今天我尝试将请求从它发送到jquery的$.ajax();way。

为此,这是我的客户端功能:

代码语言:javascript
复制
function ajaxQuery(){
  $.ajax({
   url: 'http://localhost:8080/recommender/sider/drugs',
   method:'POST',
   dataType: 'json',
   contentType: 'application/json',
   data: JSON.stringify({"uris":["SampleName1", "SampleName2", "SampleName3"],"limit":100 }),
   xhrFields: {
      withCredentials: true
   }
}).done(function(data) { console.log(data) });
}

这是我在服务器端使用的过滤器:

代码语言:javascript
复制
public class CORSFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain filterChain) throws IOException, ServletException {

        if (response instanceof HttpServletResponse) {
            HttpServletResponse alteredResponse = ((HttpServletResponse) response);
            addCorsHeader((HttpServletRequest) request, alteredResponse);
        }

        filterChain.doFilter(request, response);
    }

    private void addCorsHeader(HttpServletRequest request, HttpServletResponse response) {
        response.addHeader("Access-Control-Allow-Origin", "http://localhost:3000");
        response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, HEAD");
        response.addHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Origin, X-Requested-With, Content-Type, Accept, X-Requested-By");
        response.addHeader("Access-Control-Allow-Credentials", "true");
        response.addHeader("Access-Control-Max-Age", "1728000");
    }

    @Override
    public void destroy() {
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
}

不幸的是,当我发送这个帖子请求时,我收到了http 405错误,这是我错误部分的截图。https://www.dropbox.com/s/3wqlqkbnqwnjllx/Screenshot%202015-08-18%2011.27.29.png?dl=0

我该如何处理这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-18 08:34:23

你实际上是在发送GET请求,而不是POST。你在你的$.ajax中使用了$.ajax。我怀疑您的jQuery版本低于1.9.0,应该使用type

代码语言:javascript
复制
$.ajax({
   ...
   type:'POST',
   ...

根据文档(http://api.jquery.com/jquery.ajax/):

method的别名。如果在1.9.0之前使用的是type版本,则应该使用jQuery。

票数 1
EN

Stack Overflow用户

发布于 2015-08-18 09:38:44

我认为您需要将数据类型更改为jsonp

代码语言:javascript
复制
{dataType: 'jsonp'}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32067317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档