0

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

基本上,由于我无法访问我查询的 Web 服务器,因此跨域能力是非常必要的。

4

3 回答 3

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 文档,但源文件中有一些文档注释。

于 2013-03-21T23:04:34.280 回答
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

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

于 2013-03-21T21:13:24.010 回答
0

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

于 2013-03-21T21:21:14.590 回答