2016-11-08 50 views
0

我收到一个荒谬的错误,同时使用角度$ http与post方法。

在发送$ http POST请求时,它没有附加Content-type标头,并且由于此错误,我收到一条错误“预检的响应具有无效的HTTP状态码404”。 这是我的代码 -

var obj={ 
     "mobile":"hello", 
     "password":"asjd" 
    } 
$http({ 
    url: 'http://cbsatwork.com/laundry/api-authentication', 
    method: 'POST', 
    data:obj, 
    headers: { 
     "Content-Type": "application/json" 
    } 
    }) 

虽然如果我删除了“数据显示:目标文件”从代码行,它的工作原理和我从服务器获取通常的反应。 我已经看过很多答案,但无法为我工作。

编辑: 我尝试使用jQuery中的$ .ajax()方法,它工作得很好。没有问题。所以我不认为我的服务器有任何问题。

预检
+0

您是否向WCF或WebApi后端发出此请求?如果是的话,我可以建议你添加启用CORS的属性,你的问题可能与CORS有关。 https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api – katmanco

+0

如果您在url之前传递该方法会怎么样? – Korte

+0

您要发送请求的域名是什么? –

回答

1

响应具有无效的HTTP状态码404

此错误表示最有可能有一个CORS问题。浏览器发送两个请求。第一个请求是OPTIONS,另一个是POST,你在你的例子中配置。问题不太可能与Content-Type标题相同,因为此标题是使用POST而不是OPTIONS发送的。这是OPTIONS请求失败。检查您的服务器是否支持OPTIONS请求并发回正确的CORS所需标头

+0

谢谢最大值,但我在我的响应标题中得到这个 - 访问控制允许方法:GET,POST,PUT,OPTIONS,DELETE,HEAD。而且我甚至在浏览器中放了一个cors扩展,但它仍然不起作用。 –

+0

另外,同样的情况发生时,我使用jQuery而不是$ http $ .jax。 function submit(){ \t \t \t var obj = {'mobile':'asd','password':'asdk'}; \t \t \t $阿贾克斯({ \t \t \t \t方法: “POST”, \t \t \t \t网址:“HTTP://www.cbsatwork。COM /洗衣/ API认证”, \t \t \t \t数据:OBJ \t \t \t}); \t \t} 这工作完全正常 速滑运动员的肌肉两项要求(1由$ HTTP和发出的另一个唯一的区别。通过$ .ajax是一个标题Content-Type) –

+0

好的,你能用小提琴来抓住两个请求(OPTONS和POST)及其响应吗? –