我在Delphi 11.2上测试TMS WEB Core 2和DMVC 3.2.2(最新)。
我已经创建了一个简单的DMVC服务器,通过向导的所有默认设置没有什么花哨的,除了添加了CORS选项。
我已经创建了一个TMS Web核心项目与所有默认设置以及WebHttpRequest和WebMemo组件。
我运行了DMVC服务器,可以在浏览器上得到结果美化。
我运行TMS Web核心项目,使用
向服务器发送请求WebHttpRequest就像这样:
WebHttpRequest1.URL := 'http://localhost:8080/api/test';
WebHttpRequest1.Execute(
procedure(AResponse: string; AReq: TJSXMLHttpRequest)
begin
WebMemo1.Lines.Add(AResponse);
end
);
但是我得到了这个错误:
ERROR
HTTP request error @http://localhost:8080/api/test | fMessage::HTTP request error @http://localhost:8080/api/test fHelpContext::0
at http://localhost:8000/Project1/Project1.js [263:50]
和浏览器开发控制台显示:
Access to XMLHttpRequest at 'localhost:8080/api/test' from origin 'localhost:8000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header has a value 'localhost:8080' that is not equal to the supplied origin.
我想从客户端发送一个请求到服务器,并在WebMemo中得到响应。
我在网上检查了一下,发现这是一个后端问题,有人说它与CORS有关,那么我如何使用DMVC在服务器端启用CORS ?
您的配置阻止客户端连接。
服务器名和端口都必须匹配CORS规则。要解决这个问题,请将CORS标头更改为匹配的值。
可以是
Access-Control-Allow-Origin: http://localhost
或
Access-Control-Allow-Origin: http://localhost:8000
参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS