取回Api - 删除 - 对预检请求的响应不通过访问控制检查

取回Api - 删除 - 对预检请求的响应不通过访问控制检查

问题描述:

我有很多解决方案没有人帮助我。我已经按照所有解决方案设置了所有必需的标题。仍然显示下面的错误。取回Api - 删除 - 对预检请求的响应不通过访问控制检查

提取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){ 

    }) 

我试着设置模式:无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); 

感谢。

+1

你可以做一个正常的请求,通过'http://本地主机:25424/API /员工/ DeleteEmployee /'通过浏览器...也许火狐,一旦你得到回应, 开放,开发者控制台网络面板,编辑并重发' 添加'Origin:http:// localhost',并在这里发布新的响应标头? 此外,你**不应该**在获取请求中添加任何“访问控制”标题。这些头文件应该是响应头文件 –

+1

发生这种情况**当适当的响应头文件**是**不是通过读取找到**。查看您的响应标题是您解决问题的唯一方法。 **不透明**响应IMO不会给你任何事情。 –

适当的访问控制头绝对需要将通过

http://localhost:25424/api/Employee/DeleteEmployee/设置,使http://localhost:7777做出允许删除浏览器的网络面板

  • 检查,做一个普通的请求
  • 打开有问题的网络请求 - 做edit and resend(假设火狐)
  • 添加请求标题Origin:http://localhost并重新发送请求

发送响应头。

此外,

  • 选择一个不同的用户,当您重新发送请求删除,或者可能是一个解决方案之前比delete进行故障排除不同的方法

注意确保你正在请求一些不会给你的东西404

当你看到响应头,如果你看不到Access-control-allow-origin允许本地主机:7777,或者,

Access-control-allow-methods允许删除,你的要求是势必失败。

在这种情况下,也许你还没有配置你在端口25424 API正确的是,发送这些响应

I 2小时后得到了自己的解决方案。 问题是我忘记把'id?='放在我的请求中。

fetch('http://localhost:25424/api/Employee/DeleteEmployee/' +1, 

而不是这个。我用下面来解决这个问题。

fetch('http://localhost:25424/api/Employee/DeleteEmployee?id=' +1,