我用 javascript 编写了一堆脚本,并想切换到 dart 或至少开始使用它。我确实有一个问题:我知道 js 不支持浏览器中的 x 域请求,但是从服务器运行 dart 应用程序/脚本呢,它仍然一样吗?这甚至可以做到吗?
基本上,由于我无法访问我查询的 Web 服务器,因此跨域能力是非常必要的。
我用 javascript 编写了一堆脚本,并想切换到 dart 或至少开始使用它。我确实有一个问题:我知道 js 不支持浏览器中的 x 域请求,但是从服务器运行 dart 应用程序/脚本呢,它仍然一样吗?这甚至可以做到吗?
基本上,由于我无法访问我查询的 Web 服务器,因此跨域能力是非常必要的。
听起来您可能会询问是否编写可以向 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 文档,但源文件中有一些文档注释。
跨域安全性内置在浏览器中,因此既不是 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
编辑:正确的方法是让您的客户端代码与您拥有的服务器通信,并让该服务器与第三方服务器通信。
Access-Control-Allow-Origin
您可以通过在 http 响应上设置标头来启用服务器上的跨域请求。该值要么*
允许任何来源访问资源,但指定有效来源绝对更安全。