1

我正在尝试从另一台主机上的网站中的脚本向我的 Starcounter 应用程序发送浏览器请求。我收到一个错误:

跨域请求被阻止:同源策略不允许读取远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决

在 Starcounter 应用程序中启用 CORS 的最佳方法是什么?

4

1 回答 1

3

如果要在 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 实现一个预检请求处理程序。例如:POSTPUTDELETE

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/

于 2017-12-14T15:16:45.400 回答