提问人:Dimuthu Madushan 提问时间:11/17/2023 更新时间:11/17/2023 访问量:22
尝试解决 localhost 中放置请求的 CORS 错误
Trying to resolve CORS error on put request in localhost
问:
使用PUT方法时,我收到此错误。
对印前检查请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
Ballerina 服务器没有将我的 put 请求识别为相应的资源。
这是我的芭蕾舞女演员服务代码:
import ballerina/http;
@http:ServiceConfig {
cors: {
allowOrigins: ["http://localhost:3000"],
allowMethods:["GET","POST","PUT","DELETE","OPTIONS"]
}
}
service /projects on new http:Listener(8080) {
isolated resource function post .(@http:Payload Project project) returns int|error? {
return addProject(project);
}
isolated resource function get [int id]() returns Project|error? {
return getProject(id);
}
isolated resource function get .() returns Project[]|error? {
return getAllProjects();
}
isolated resource function put .(@http:Payload Project project) returns int|error? {
return updateProject(project);
}
isolated resource function delete [int id]() returns int|error? {
return removeProject(id);
}
}
在向此 PUT 资源发出请求时,我没有收到 Access-Control-Allow-Origin 标头:。这是我从此服务收到的实际响应:preflight
/projects/1
HTTP/1.1 204 No Content
allow: GET, DELETE, OPTIONS
content-length: 0
server: ballerina
date: Tue, 21 Mar 2023 11:03:14 +0530, 0B
答:
1赞
Dimuthu Madushan
11/17/2023
#1
这是意料之中的,因为服务中没有资源匹配。如果您指的是此 PUT 资源:projects/1
isolated resource function put .(@http:Payload Project project) returns int|error? {
return updateProject(project);
}
那么这不是绑定到,这实际上是绑定到的(更多信息可以在这里找到)。由于请求的资源不存在,因此您没有获得标头。/projects/[id]
/projects
Access-Control-Allow-Origin
如果你像这样改变你的资源,那么它应该可以工作:
isolated resource function put [int id](@http:Payload Project project) returns int|error? {
return updateProject(project);
}
上一个:获取每个连接带宽统计信息
评论