预检响应没有 HTTP 正常状态。 Angular 6 中的 403
Response for preflight does not have HTTP ok status. 403 in Angular 6
我正在尝试发出 PUT 请求,但出现以下错误:
Failed to load <localhost:8080/uaa/groups/dfsfaes8323df32>: Response for preflight does not have HTTP ok status.
显然,当我发出 GET 和 POST 请求并在邮递员中工作时它可以工作,但它不适用于我的代码中的 PUT 请求。
这是我的要求:
let link = "https://ice.<mydomain>.com/uaadev/Groups/{groupId}";
link = link.replace("{groupId}", data);
const updLoad = {
displayName: this.groupInfoObjects.displayName,
description: this.groupInfoObjects.description,
zoneId : "uaa",
schemas: [
"urn:scim:schemas:core:1.0"
]
};
let Header = new Headers({
Authorization: `Bearer {token}`.replace("{token}", this.token),
"Content-Type": "application/json",
Accept: "application/json",
"if-Match":"*"
});
let Option = new RequestOptions({ headers: Header });
this.http.put(link, updLoad, Option).subscribe(
res => {
console.log(res);
console.log(res.status);
if (res.status === 200) {
this.fetchGroupInfo(this.dataservice.getDTO("GroupId"));
swal(" Updated Successfully");
}
},
error => {
console.log("errroroorororororor");
console.log("error object " +error);
}
);
这是因为您必须确保您的服务器配置为在 PUT 请求之前为浏览器触发的 请求发送 200 或 204。
查看第一个回复here
你用 PUT 得到这个的原因是因为它触发了 OPTIONS(浏览器的额外预检请求)来查看更多关于什么方法触发这个你可以看看 here。基本上,浏览器是 "pinging" PUT 之前的服务器。
令人沮丧的是,这似乎是一个前端问题,因为 PUT 请求在测试时有效(即,如果您使用邮递员),但在浏览器中无效。
所以这不是前端问题,无法使用 Angular 解决。
the process for solving these process is listed below:
1.create a proxy.conf.json file
2.set it up like this:copy and paste the below code
{
"/dev/*": {
"target": "https://google.com/",
"secure": false
},
"changeOrigin": false,
"logLevel": "debug"
}
3. add this to your package.json :
"start": "ng serve --proxy-config ../Activated/proxy.conf.json",
Note:Activated is the folder name that contains the angular code.
4.you place your url link:
let link = "dev/Groups/{groupId}" (just a sample)`enter code here`
5.npm start to restart you application.
我正在尝试发出 PUT 请求,但出现以下错误:
Failed to load <localhost:8080/uaa/groups/dfsfaes8323df32>: Response for preflight does not have HTTP ok status.
显然,当我发出 GET 和 POST 请求并在邮递员中工作时它可以工作,但它不适用于我的代码中的 PUT 请求。
这是我的要求:
let link = "https://ice.<mydomain>.com/uaadev/Groups/{groupId}";
link = link.replace("{groupId}", data);
const updLoad = {
displayName: this.groupInfoObjects.displayName,
description: this.groupInfoObjects.description,
zoneId : "uaa",
schemas: [
"urn:scim:schemas:core:1.0"
]
};
let Header = new Headers({
Authorization: `Bearer {token}`.replace("{token}", this.token),
"Content-Type": "application/json",
Accept: "application/json",
"if-Match":"*"
});
let Option = new RequestOptions({ headers: Header });
this.http.put(link, updLoad, Option).subscribe(
res => {
console.log(res);
console.log(res.status);
if (res.status === 200) {
this.fetchGroupInfo(this.dataservice.getDTO("GroupId"));
swal(" Updated Successfully");
}
},
error => {
console.log("errroroorororororor");
console.log("error object " +error);
}
);
这是因为您必须确保您的服务器配置为在 PUT 请求之前为浏览器触发的
查看第一个回复here
你用 PUT 得到这个的原因是因为它触发了 OPTIONS(浏览器的额外预检请求)来查看更多关于什么方法触发这个你可以看看 here。基本上,浏览器是 "pinging" PUT 之前的服务器。
令人沮丧的是,这似乎是一个前端问题,因为 PUT 请求在测试时有效(即,如果您使用邮递员),但在浏览器中无效。
所以这不是前端问题,无法使用 Angular 解决。
the process for solving these process is listed below:
1.create a proxy.conf.json file
2.set it up like this:copy and paste the below code
{
"/dev/*": {
"target": "https://google.com/",
"secure": false
},
"changeOrigin": false,
"logLevel": "debug"
}
3. add this to your package.json :
"start": "ng serve --proxy-config ../Activated/proxy.conf.json",
Note:Activated is the folder name that contains the angular code.
4.you place your url link:
let link = "dev/Groups/{groupId}" (just a sample)`enter code here`
5.npm start to restart you application.