在Starcounter中启用CORS

时间:2017-12-14 14:07:52

标签: c# starcounter

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

  

阻止跨源请求:同源策略禁止读取远程资源。这可以通过将资源移动到同一域或启用CORS

来解决

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

1 个答案:

答案 0 :(得分:3)

如果要在Web浏览器中接受来自其他主机的请求,则需要实现CORS。这在Starcounter中与在大多数其他应用程序框架中完成相同。

要从任何主机接受GET请求或简单POST请求(带标准标头),您只需向HTTP GET处理程序添加响应标头Access-Control-Allow-Origin: *。例如:

Handle.GET("/myapp/some-page", () => {
  var page = new Json();
  var response = new Response();
  response.Resource = page;
  response.Headers["Access-Control-Allow-Origin"] = "*";
  return response;
});

要接受所有更改服务器上的内容的请求(POSTPUTDELETE),您应该在同一个URI上实现OPTIONS预检请求处理程序您的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/