Проверить URL с помощью JavaScript? - PullRequest
1 голос
/ 28 октября 2011

У меня есть приложение, в котором у пользователей есть страница настроек, и некоторые из этих настроек позволяют вводить URL-адреса.Я хочу иметь возможность запустить проверку с использованием JavaScript, чтобы убедиться, что введенный ими URL-адрес действительный и реальный URL-адрес.

Когда они нажимают кнопку «Отправить», он либо делает то, что должен, либо, если естьошибка в URL, всплывающее окно с предупреждением и скажите «Неверный URL введен!».

Есть ли способ сделать это с JS?Я также хочу, чтобы этот скрипт работал с http: // и https: //, а также с www.в URL и каждом доменном расширении (.com, .tv и т. д.).Это также должно быть сделано с помощью JavaScript, а не jQuery.

Может кто-нибудь показать мне, как это сделать?Спасибо.

1 Ответ

2 голосов
/ 28 октября 2011

Кажется, вы хотите сделать две вещи:

1) Определить, что URL действителен (то есть правильно отформатирован)

Для этого регулярное выражение будет хорошо работать, этот подходтакже позволит вам извлекать различные части URL, если вы хотите это сделать.

это обсуждалось здесь: Какое регулярное выражение лучше всего проверить, является ли строка допустимойURL? .

2) Определите, является ли URL реальным (т. Е. Если кто-то, где ему следовать, найдет что-то)

Это более сложно, но вы можете попробоватьAJAX-запрос к URL-адресу и, если он не работает или время ожидания истекло, предположите, что он не работает.У этого подхода могут быть некоторые ограничения из-за функций безопасности XSS на сайтах.

Если это проблема, вы можете создать службу собственного дизайна, работающую на сервере, к которому ваш JavaScript-запрос обращается, передавая его.URL, и он отвечает с ошибкой или успехом.

Вот пример:

verify.js

function verifyURL (url) {
    // with jQuery
    $.getJSON('check-url.cgi', { url : url }, function (res) {
        console.log(res); // display server response
            if ( res.status == 'success' ) {
               // URL is real
            } else {
               // URL is not real
            }
    });
}

check-url.cgi

#!/usr/bin/env perl
use v5.10;
use strict;
use warnings;

use CGI qw(:standard);
use JSON::XS;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
$ua->agent("URL Checker/0.1");

my $url    = param('url');
my $req    = HTTP::Request->new(GET => $url);
my $res    = $ua->request($req);
my $status = $res->is_success ? 'success' : 'failure';

print header('applicaton/json'), encode_json { status => $status };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...