我正在尝试从另一台主机上的网站脚本向我的Starcounter应用发送浏览器请求。我收到一个错误:
阻止跨源请求:同源策略禁止读取远程资源。这可以通过将资源移动到同一域或启用CORS
来解决
在Starcounter应用中启用CORS的最佳方法是什么?
答案 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;
});
要接受所有更改服务器上的内容的请求(POST
,PUT
和DELETE
),您应该在同一个URI上实现OPTIONS
预检请求处理程序您的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/