我正在尝试从另一台主机上的网站中的脚本向我的 Starcounter 应用程序发送浏览器请求。我收到一个错误:
跨域请求被阻止:同源策略不允许读取远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决
在 Starcounter 应用程序中启用 CORS 的最佳方法是什么?
我正在尝试从另一台主机上的网站中的脚本向我的 Starcounter 应用程序发送浏览器请求。我收到一个错误:
跨域请求被阻止:同源策略不允许读取远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决
在 Starcounter 应用程序中启用 CORS 的最佳方法是什么?
如果要在 Web 浏览器中接受来自其他主机的请求,则需要实现 CORS。这在 Starcounter 中的完成方式与在大多数其他应用程序框架中相同。
要接受来自任何主机的GET
请求或简单POST
请求(带有标准标头),您只需向Access-Control-Allow-Origin: *
HTTP GET 处理程序添加响应标头。例如:
Handle.GET("/myapp/some-page", () => {
var page = new Json();
var response = new Response();
response.Resource = page;
response.Headers["Access-Control-Allow-Origin"] = "*";
return response;
});
POST
要接受所有在服务器(PUT
和)上更改某些内容的请求DELETE
,您应该在您的,和处理OPTIONS
程序中为相同的 URI 实现一个预检请求处理程序。例如:POST
PUT
DELETE
Handle.PUT("/myapp/some-page", () => {
var page = new Json();
/* some logic ... */
var response = new Response();
response.Resource = page;
response.Headers["Access-Control-Allow-Origin"] = "*";
return response;
});
Handle.OPTIONS("/myapp/some-page", () => {
var response = new Response();
response.Resource = page;
response.Headers["Access-Control-Allow-Origin"] = "*";
response.Headers["Access-Control-Allow-Methods"] = "POST, PUT, GET, OPTIONS";
response.Headers["Access-Control-Allow-Headers"] = "*";
return response;
});
阅读更多关于 CORS 的信息: - https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS - https://www.html5rocks.com/en/tutorials/cors/