【发布时间】:2018-01-12 04:05:37
【问题描述】:
我得到了很多解决方案,没有人帮助我。我已经按照所有解决方案设置了所有必需的标题。仍然显示以下错误。
Fetch API 无法加载 http://localhost:25424/api/Employee/DeleteEmployee/1。回应 预检请求未通过访问控制检查:否 'Access-Control-Allow-Origin' 标头出现在请求的 资源。因此不允许使用原点“http://localhost:7777” 使用权。响应的 HTTP 状态代码为 404。如果响应不透明 满足您的需求,将请求的模式设置为“no-cors”以获取 禁用 CORS 的资源。
我的获取请求:
fetch('http://localhost:25424/api/Employee/DeleteEmployee/' +1, {
method: "DELETE",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Access-Control-Allow-Origin' : '*' ,
'Access-Control-Allow-Headers' : 'Origin, X-Requested-With, Content-Type, Accept',
'Access-Control-Allow-Methods' : 'DELETE',
'mode' : 'cors'
},
})
.then(function(resp){
})
我也试过 set mode : no-cors。
我的网络 api 代码:
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class EmployeeController : ApiController
{
[HttpDelete]
public IHttpActionResult DeleteEmployee(int id)
{
using (var ctx = new Employee())
{
var existingemp = ctx.tempemp.Where(s => s.Id == id).FirstOrDefault();
ctx.Entry(existingemp).State = System.Data.Entity.EntityState.Deleted;
ctx.SaveChanges();
}
return Ok();
}
}
我也在 WebApiConfig.cs 中设置了 CORS
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
提前致谢。
【问题讨论】:
-
你能不能通过浏览器向
http://localhost:25424/api/Employee/DeleteEmployee/发出正常请求...也许是firefox,一旦你得到响应,打开开发控制台网络面板,做edit and resend添加Origin:http://localhost并发布新的响应头在这里?此外,您不应在 fetch 请求中添加任何access-control标头。这些标头应该是响应标头 -
这种情况发生在当适当的响应标头 未被 fetch 找到时。查看响应标头是解决问题的唯一方法。 不透明响应 IMO 不会给您任何可处理的东西。
标签: reactjs asp.net-web-api cors fetch-api http-delete