【发布时间】:2019-12-20 14:06:36
【问题描述】:
我已经关注 Angular 7 的 this tutorial 来制作 CRUD 函数。我将项目发布到我的IIS,但我有一个error (Image)
从源“http://localhost:4200”访问“http://192.168.120.178:2030/Api/Employee/UpdateEmployeeDetails/”处的 XMLHttpRequest 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。
我尝试在Update Code 中添加标题以允许 CORS,但它是相同的。
该错误也适用于其他功能(保存、删除)
角度代码
updateEmployee(employee: Employee): Observable<Employee> {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Access-Control-Allow-Credentials': "true",
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Allow-Methods': 'GET',
'Access-Control-Allow-Origin': '*'
})
};
return this.http.put<Employee>(this.url + '/UpdateEmployeeDetails/',
employee, httpOptions);
}
API 代码
[HttpPut]
[Route("UpdateEmployeeDetails")]
public IHttpActionResult PutEmaployeeMaster(EmployeeDetail employee)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
try
{
EmployeeDetail objEmp = new EmployeeDetail();
objEmp = objEntity.EmployeeDetails.Find(employee.EmpId);
if (objEmp != null)
{
objEmp.EmpName = employee.EmpName;
objEmp.Address = employee.Address;
objEmp.EmailId = employee.EmailId;
objEmp.DateOfBirth = employee.DateOfBirth;
objEmp.Gender = employee.Gender;
objEmp.PinCode = employee.PinCode;
}
int i = this.objEntity.SaveChanges();
}
catch (Exception)
{
throw;
}
return Ok(employee);
}
但如果我使用 localhost API 运行我的项目,那没关系。但是在发布(IIS)中,我得到了 CORS 错误。我已经花了一整天,但不幸的是我没有找到解决问题的方法。
【问题讨论】:
-
您在请求(Angular)中设置了
Access-Control-Allow-*标头,但它们应该设置为响应(IIS),您需要的可能是like this -
@Mendy 我应该在标题名称和值中输入什么?
-
名称为
Access-Control-Allow-Origin、Access-Control-Allow-Methods等...,值为*、GET等...。明白了吗? -
@Mendy 我将其添加为说明。现在我遇到了一个新错误。
response to preflight request doesn't pass access control check
标签: javascript angular iis cors