为了账号安全,请及时绑定邮箱和手机立即绑定

CORS POST请求可以使用普通的javascript,但为什么不使用jQuery?

CORS POST请求可以使用普通的javascript,但为什么不使用jQuery?

米脂 2019-07-31 18:19:13
CORS POST请求可以使用普通的javascript,但为什么不使用jQuery?我正在尝试制作一个Cross Origin帖子请求,并且我使用这样的普通Javascript工作:var request = new XMLHttpRequest();var params = "action=something";request.open('POST', url, true);request.onreadystatechange = function() {if (request.readyState==4) alert("It worked!");};request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");request.setRequestHeader("Content-length", params.length);request.setRequestHeader("Connection", "close");request.send(params);但我想使用jQuery,但我无法让它工作。这就是我正在尝试的:$.ajax(url, {    type:"POST",    dataType:"json",    data:{action:"something"},     success:function(data, textStatus, jqXHR) {alert("success");},    error: function(jqXHR, textStatus, errorThrown) {alert("failure");}});这导致失败。如果有人知道为什么jQuery不起作用,请让我们都知道。谢谢。(我正在使用jQuery 1.5.1和Firefox 4.0,我的服务器正在使用正确的Access-Control-Allow-Origin标头进行响应)
查看完整描述

3 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

另一种可能性是设置dataType: json导致JQuery发送Content-Type: application/json标头。这被CORS视为非标准头,并且需要CORS预检请求。所以要尝试一些事情:

1)尝试配置服务器以发送正确的预检响应。这将是像附加头的形式Access-Control-Allow-MethodsAccess-Control-Allow-Headers

2)删除dataType: json设置。JQuery应该Content-Type: application/x-www-form-urlencoded默认请求,但只是为了确定,你可以替换dataType: jsoncontentType: 'application/x-www-form-urlencoded'


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 612 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信