取回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);
感谢。
答
适当的访问控制头绝对需要将通过
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,
你可以做一个正常的请求,通过'http://本地主机:25424/API /员工/ DeleteEmployee /'通过浏览器...也许火狐,一旦你得到回应, 开放,开发者控制台网络面板,编辑并重发' 添加'Origin:http:// localhost',并在这里发布新的响应标头? 此外,你**不应该**在获取请求中添加任何“访问控制”标题。这些头文件应该是响应头文件 –
发生这种情况**当适当的响应头文件**是**不是通过读取找到**。查看您的响应标题是您解决问题的唯一方法。 **不透明**响应IMO不会给你任何事情。 –