无法对Web API进行远程POST(发送字符串) - 不确定会发生什么

时间:2016-05-16 05:41:09

标签: ajax asp.net-web-api cors

我有一个web api方法:

    [HttpPost]
    public IActionResult Post([FromBody]string entryInJson)
    { ....  }    

此方法受远程域命中,因此需要CORS。由于我没有成功在我的mvc6应用程序中找到相关的cs文件,我在web.config中使用了这个解决方案:

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
    </customHeaders>
</httpProtocol>

当我使用http://requestmaker.com/等在线工具发帖时,我得到了这个:

请求标题已发送:

POST /api/Entries/ HTTP/1.1
Host: justalk.tukuoro.com
Accept: */*
Content-Type: text/plain
Content-Length: 179

响应标题:

Cache-Control: no-cache
Pragma: no-cache
Content-Length: 0
Expires: -1
Location: https://justalk.tukuoro.com/Account/Login?ReturnUrl=%2FHome%2FError
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Date: Mon, 16 May 2016 05:25:53 GMT

现在,似乎它正在尝试将我(302)重定向到错误页面,并且它没有从post方法返回任何内容,返回:

return new ObjectResult(true);

我不确定发生了什么:

  1. 我到了正确的控制器吗?我有代码,应该记录传入的字符串,但它不会创建日志。
  2. 如果不能正常工作?为什么?回复标题告诉我一些我不明白的事情?
  3. 我做得对吗?
  4. 谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

如果您要发送json发布请求,则entryInJson必须object类型而不是string

例如

 [HttpPost]
    public IActionResult Post([FromBody]EntryInJson entryInJson)
    { ....  } 

聊天评论

  

对我的post方法执行http请求的代码 - 如何将此类“RemoteEntry”转换为JSON数据

http://www.newtonsoft.com/json/help/html/serializingjson.htm

更新:

302不是错误,而是对tempoaray位置的重复。您可以将请求重新发送到响应标头中收到的新位置 而且它可能是服务器配置错误的问题。

modSecurity防火墙阻止您的请求进行自动重定向(302)。