服务器端Dart中的跨域请求

时间:2013-03-21 20:02:17

标签: http httpwebrequest dart

我在javascript中写了一堆脚本,想要切换到dart或者至少开始使用它。我确实有一个问题:我知道js并不支持浏览器中的x-domain请求,但是从服务器运行dart应用程序/脚本呢,它仍然是一样的吗?甚至可以这样做吗?

基本上,由于我无法访问我查询的Web服务器,因此跨域权限是必不可少的。

3 个答案:

答案 0 :(得分:4)

听起来您可能会询问编写服务器端命令行脚本,该脚本可以向HTTP服务器发出请求。虽然问题的措辞对我来说并不完全清楚。 (上面的答案是关于基于浏览器的Dart脚本。)

Dart可以实现这一点。在这种情况下没有交叉原点限制。

请参阅HttpClient课程。 或者您可以在pub上使用http包。

我建议使用http包,因为它提供了一个更简单的高级界面。

以下是使用http包的示例:

import 'dart:io';
import 'package:http/http.dart' as http;

main() {
    http.read("http://google.com").then((content) {
        print(content);
    });
}

您需要更新pubspec.yaml文件以添加以下依赖项:

name: Http Example
   dependencies:
     http: any
     pathos: any

(实际上,你应该只需要包含http,但我认为http包在它的pubspec.yaml文件中缺少pathos依赖。)

我找不到http的漂亮文档,但source file中有一些文档评论。

答案 1 :(得分:2)

跨域安全性内置于浏览器中,因此既不是Dart或JavaScript的功能。

对测试很有用:您可以将标记传递给chrome,这将禁用此安全功能。见这里:http://joshuamcginnis.com/2011/02/28/how-to-disable-same-origin-policy-in-chrome/

如果您要执行GET请求,则可以使用Dart JavaScript互操作,请参阅本文中的此部分:http://www.dartlang.org/articles/json-web-service/#note-on-cors

如果您想要POST请求,除非目标服务器支持CORS,否则您将遇到问题。更多详情:https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

编辑:正确的方法是让您的客户端代码与您拥有的服务器通信,并让该服务器与第三方服务器通信。

答案 2 :(得分:0)

您可以通过在http响应上设置Access-Control-Allow-Origin标头来启用服务器上的跨源请求。值为*以允许任何来源访问资源,但指定有效的来源肯定更安全。