使用MVC 5在本地主机上使用IISExpress时出现Ajax发布和CORS飞行前错误
我正在本地主机上使用Visual Studio和IIS Express测试对外部地址的Ajax请求。(我已经使用Fiddler测试了这个请求,它工作正常!) 当我运行它时,我会在浏览器(Chrome)控制台中看到以下内容: 我用拖网捕鱼,并尝试添加以下内容:使用MVC 5在本地主机上使用IISExpress时出现Ajax发布和CORS飞行前错误,ajax,asp.net-mvc-5,cors,iis-express,Ajax,Asp.net Mvc 5,Cors,Iis Express,我正在本地主机上使用Visual Studio和IIS Express测试对外部地址的Ajax请求。(我已经使用Fiddler测试了这个请求,它工作正常!) 当我运行它时,我会在浏览器(Chrome)控制台中看到以下内容: 我用拖网捕鱼,并尝试添加以下内容: <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,HEAD,OPTIONS" />
<add name="Access-Control-Expose-Headers" value="*" />
<add name="Access-Control-Request-Headers" value="*" />
<add name="Access-Control-Request-Method" value="GET,PUT,POST,DELETE,HEAD,OPTIONS" />
<add name="X-Frame-Options" value="DENY" />
</customHeaders>
</httpProtocol>
</system.webServer>
以下是我在上面尝试过的一些东西:
还有其他建议吗?我的点子快用完了
谢谢 我认为当试图从客户端代码(与服务器端代码相反)调用外部API时,这是一个问题 为了在MVC中解决这个问题,我将ajax请求指向如下的本地操作:
url: '@Url.Action("Action", "Controller")'
然后在action方法中(用[HttpPost]属性修饰),我使用HttpWebRequest成功地向外部API发出请求
var newDataRequest = $.ajax({
type: "post",
url: 'https://api.example.com/',
crossDomain : true,
crossOrigin: true,
headers: {
"Accept": "application/json",
"Content-Type":"application/json",
"Access-Control-Allow-Origin":"https://localhost:44306/",
"Access-Control-Expose-Headers":"*",
"Access-Control-Request-Headers":"access-control-allow-credentials,access-control-allow-headers,access-control-allow-methods,access-control-allow-origin,access-control-expose-headers,access-control-max-age,content-type,key,x-frame-options",
"Access-Control-Allow-Methods" : "GET,PUT,POST,DELETE,HEAD,OPTIONS",
"Access-Control-Allow-Headers" : "Content-Type,Authorization,Accept",
"Access-Control-Max-Age" : 1728000,
"Access-Control-Allow-Credentials" : true,
"X-Frame-Options":"DENY"
},
data: {},
timeout: 60000
}).done(function (data) {
}).fail(function (jqXHR, textStatus) {
}).always(function (jqXHR, textStatus) {
stopSpinner();
});
url: '@Url.Action("Action", "Controller")'