检查客户端代码

时间:2017-09-11 09:50:07

标签: javascript jquery json ajax

我的目标是从客户端检查URL是否有效。我尝试了以下事项: 1.使用dataType作为JSON尝试使用ajax请求。 - 获得跨源请求阻止错误。 2.尝试使用JSONP作为数据类型。 - 对于像google.com这样的网站来说工作得很好,但是对于像facebook.com这样的其他网站来说这很好。

得到错误,例如"拒绝执行脚本 FaceBook

callback=jQuery32107833494968122849_1505110738710&_=1505110738711' 

因为它的MIME类型

('text/html')不可执行,并且启用了严格的MIME类型检查。"

是否有任何解决方法。我只想确保URL无效,无论响应中的内容如何。

以下是我写的代码:

<html>
  <body>
     <script 

     src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
    </script>
<script>
    function CallPageMethod() {
            $.ajax({
                type: "GET",
                url: "https://www.google.com/",
                dataType: "jsonp",
                success: function (data, textStatus, xhr) {
                    alert("Success");
                },
                error: function (data, textStatus, xhr) {
                    if (data.status === 200) {
                        alert("Finally I am done")
                    } else {
                        alert("Error");
                    }
                },
            });
    }
</script>
<Button onclick="CallPageMethod()">Test URL</Button>
</body>

</html>

我应该遵循哪些建议或任何替代方法来解决此问题?

2 个答案:

答案 0 :(得分:0)

不正确,但大多数网站都有一个favicon.ico,无论是直接来自网站还是来自托管公司,如果它是404图像。

Prefix: owl: <http://www.w3.org/2002/07/owl#>
Prefix: rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
Prefix: rdfs: <http://www.w3.org/2000/01/rdf-schema#>
Prefix: xml: <http://www.w3.org/XML/1998/namespace>
Prefix: xsd: <http://www.w3.org/2001/XMLSchema#>
Prefix: dbr: <http://dbpedia.org/resource/>
Prefix: dbo: <http://dbpedia.org/ontology/>
Prefix: oa: <http://www.w3.org/ns/oa#>
Prefix: ex: <http://example.org/>

Ontology: <http://example.org/>

# Import: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
# Import: <http://www.w3.org/ns/oa#>

ObjectProperty: oa:hasBody
ObjectProperty: oa:hasTarget
ObjectProperty: oa:hasSelector

DataProperty: oa:hasSource
DataProperty: oa:prefix
DataProperty: oa:exact
DataProperty: oa:suffix

AnnotationProperty: rdf:subject
AnnotationProperty: rdf:object
AnnotationProperty: rdf:predicate     

Class: oa:Annotation  
Class: oa:TextQuoteSelector
Class: rdf:Statement

Individual: ex:annotation12345
    Facts:
        oa:hasBody ex:statement12345,
        oa:hasTarget ex:target12345
    Types: 
        oa:Annotation

Individual: ex:statement12345
    Annotations: 
        rdf:object dbr:London,
        rdf:predicate dbo:capital,
        rdf:subject dbr:Great_Britain
    Types: 
        rdf:Statement

Individual: ex:target12345
    Facts: 
        oa:hasSelector ex:selector12345,
        oa:hasSource "https://en.wikipedia.org/wiki/London"

Individual: ex:selector12345
    Facts: 
        oa:suffix ". ",
        oa:prefix ". ",
        oa:exact "London is a capital of Great Britain"
    Types:
        oa:TextQuoteSelector

Individual: dbo:capital
Individual: dbr:Great_Britain
Individual: dbr:London

虽然iframe和对象确实有onload事件,但无效页面也会触发事件。

这是我能想到的最快的网站测试......

<img src="https://www.google.com/favicon.ico"
     onload="alert('icon loaded')">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"
     onload="alert('ajax loaded')"></script>

至于facebook,每个页面都使用来自其他网址的资源,iframe被阻止以及脚本。您需要从服务器发出请求以测试页面是否存在。

答案 1 :(得分:0)

你最好在你的服务器上写一个代理:

  • 客户端使用您要检查的 URL 访问您的服务器
  • 您的服务器向该 URL 发出请求并获得响应(或未获得响应)
  • 服务器向客户端返回状态码

这种方式将避免您必须导航的 CORS 问题,并允许您设置所需的任何 HTTP 标头。