我想使用JQuery Ajax方法向其他域WebApi发送请求。它没有标题。但是,当我发送带有自定义标头的Ajax请求时,我得到" 405-> Method Not Allowed"浏览器出错。
不起作用
$.ajax({
url: "http://localhost:53103/api/Values",
headers: { "ABC123": "ABC abc 123" }
});
此调用点击 ValuesController 构造函数,但未点击 Get()方法。
此作品
$.ajax({
url: "http://localhost:53103/api/Values"
});
此代码没有任何问题。
服务器端WebAPI
public class ValuesController : ApiController
{
public ValuesController()
{}
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
在服务器上我有vanilla WebApi项目。我也在system.webServer部分启用了CORS。
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
<add name="Access-Control-Allow-Headers" value="*" />
</customHeaders>
</httpProtocol>
正如我之前提到的在web.config中启用CORS之后我可以使用简单的ajax请求访问数据但是当我发送带有标头的ajax请求时我得到了#34; 405方法不允许&#34;错误。 我应该这样做,以便我可以将带有标题的请求发送到其他域WebApi。
答案 0 :(得分:0)
试试这个:
$.ajax({
type:"GET",
beforeSend: function (request)
{
request.setRequestHeader("ABC123", "ABC abc 123");
},
url:"http://localhost:53103/api/Values"
});