【问题标题】:POST gets converted to GET, when sending request via local apache通过本地 apache 发送请求时,POST 转换为 GET
【发布时间】:2016-03-18 06:58:48
【问题描述】:

我正在尝试使用以下代码发送发布请求。但是请求是 GET 请求,而不是 POST。如何解决这个问题。

$.ajax({
    url: 'https://www.exampleurl.com',
    method: 'POST',
    headers: {"Access-Control-Allow-Origin": true},
    data: {url:'bla',call:"trans"}
    dataType: 'jsonp',
    success: function(data){
      console.log('succes: '+data);
    }
  });

这是我得到的错误 XMLHttpRequest 无法加载 https://example.com。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost' 不允许访问。响应的 HTTP 状态代码为 401。

删除标头 Access-Control-Allow-Origin 后,我收到 404 错误

【问题讨论】:

标签: javascript jquery


【解决方案1】:

我不认为,您可以使用带有 jsonp 请求的 POST 方法。 jsonp 回调仅适用于 GET 方法。看看link

【讨论】:

  • POST 与 jsonp 实际上没有意义,因为 jsonp 的机制只是将 <script> 元素插入 DOM
【解决方案2】:

当你想发送POST请求时,你不必在url属性中传递参数,你应该使用data属性,看看jQuery.ajax()

$.ajax({
    url: 'https://www.exampleurl.com',
    method: 'POST',
    data: {q:1, q2:2},
    headers: {"Access-Control-Allow-Origin": true},
    dataType: 'jsonp',
    success: function(data){
      console.log('succes: '+data);
    }
});

希望这会有所帮助。

【讨论】:

  • 这与 dataType:jsonp 没有区别
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
相关资源
最近更新 更多