2013-03-21 2 views
-1

Я пишу кучу скриптов в javascript и хочу переключиться на дарт или хотя бы начать использовать его. У меня есть один вопрос: я знаю, что js не поддерживает запросы x-domain в браузере, но как насчет запуска приложения/сценария дротика с сервера, все ли это так? может ли это быть сделано?Перекрестные запросы домена на стороне сервера Dart

В основном, поскольку у меня нет доступа к веб-серверу, на который я запрашиваю, перекрестная владение доменом является большой необходимостью.

ответ

2

Перекрестная защита домена встроена в браузер, поэтому не является ни чертой, ни Дартом, ни JavaScript.

Полезно для тестирования: вы можете передавать флаги в хром, которые отключат эту функцию безопасности. Смотрите здесь: http://joshuamcginnis.com/2011/02/28/how-to-disable-same-origin-policy-in-chrome/

Если вы хотите сделать запрос GET, то вы можете использовать Dart JavaScript Interop см этот раздел в этой статье: http://www.dartlang.org/articles/json-web-service/#note-on-cors

Если вы хотите POST запросов с другой стороны, вы» будут возникать проблемы, если целевой сервер не поддерживает CORS. Подробнее здесь: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

Edit: Правильный подход будет иметь свой код на стороне клиента общаться с сервером вы владеете, и есть, что сервер обмена данными с сервером третьей стороной.

+0

Итак, дротик - это, в основном, gussied javascript и бесполезен в моем контексте? У меня нет доступа к серверу, поэтому я не могу изменить заголовки или сделать CORS. –

+0

Оба Dart и JavaScript, работающие в браузере (в отличие от автономных виртуальных машин, на стороне сервера), подвержены тем же ограничениям безопасности, что и браузер (для вашей собственной безопасности).В противном случае, что остановить кого-то, просто используя Dart для написания вредоносных скриптов вместо JS? Как указывалось в другом ответе, правильный подход заключался бы в том, чтобы ваш клиентский код взаимодействовал с вашим сервером и поддерживал этот сервер с сторонним сервером. –

0

Вы можете включить запросы перекрестного происхождения на сервере, установив заголовок Access-Control-Allow-Origin на ответ http. Значение равно *, чтобы разрешить любому источнику доступ к ресурсу, но определенно безопаснее указывать правильное происхождение.

4

Похоже, что вы можете спросить о написании сценария командной строки на стороне сервера, который может отправлять запросы на HTTP-сервер. Хотя формулировка вопроса мне не совсем понятна. (Ответы выше описаны в сценариях Дарта на основе браузера.)

Это возможно с помощью Дарт. В этом случае ограничений на пересечение не существует.

См. Класс HttpClient. Или вы можете использовать пакет 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.)

Я не смог найти красивую документацию для http, но есть некоторые doc комментариев в source file.

+1

Я добавил пример. Если это сработает для вас, отметьте вопрос как ответ;) –

Смежные вопросы