WebStrom : JavaScript :Html : 跨域问题 和 简单的测试是否跨域的 html页面

46 篇文章 0 订阅
2 篇文章 0 订阅

 

报错信息:

initMap.html:1 Access to XMLHttpRequest at 'http://***/SuperMap/Data-jia3/tileset.json' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

 

解决方法:

打开tomcat安装目录 -> 打开 conf 目录 -> 打开web.xml文件

添加内容如下:

<filter>
        <filter-name>CORS</filter-name>
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
        <init-param>
            <param-name>cors.allowOrigin</param-name>
            <param-value>*</param-value>
        </init-param>
        <init-param>
            <param-name>cors.supportedMethods</param-name>
            <param-value>GET,POST,HEAD,PUT,DELETE</param-value>
        </init-param>
        <init-param>
            <param-name>cors.supportedHeaders</param-name>
            <param-value>Accept,Origin,X-Requested-With,Content-Type,Last-Modified</param-value>
        </init-param>
        <init-param>
            <param-name>cors.exposedHeaders</param-name>
            <param-value>Set-Cookie</param-value>
        </init-param>
        <init-param>
            <param-name>cors.supportsCredentials</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CORS</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 注意点:

这段内容不能放在web.xml的最后位置(和开始位置),虽然不知道为什么,但是会导致跨域失败。

所以,需要放在web.xml的指定位置上: 我的大概在600行处,

因为:

<!-- ================== Built In Filter Definitions ===================== -->  465行
<!-- ==================== Built In Filter Mappings ====================== -->  593行

这区域内是web.xml本身就有的关于“Filter”"Filter Mapping" 的地方。

关闭tomcat ,重启后,跨域成功。

 

制作demo:

制作简单的html,配合ajax 的请求功能做一个简单demo来测试请求的url是否跨域的问题。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>跨域测试:jquery请求url测试跨域情况</title>
</head>
<body>
<div>
    输入测试URL:
    <input type="text" id="inputUrl" style="width:500px;" value="http://****/SuperMap/Tile/World/Image/tms.xml">
    <button onclick="sendUrl()">发送url</button>
</div><br/>
输出结果:<br/>
<div id="outputResponse" style="width: 500px;height: 500px">
</div>
<script>
    var s = "http://***/SuperMap/Data-jia3/tileset.json";
    var ss = "http://****/SuperMap/Tile/World/Image/tms.xml";
    function dealSuccessResponse(response){
        console.log("result",response);
        var outputDoc = document.getElementById("outputResponse");
       
        outputDoc.innerHTML = JSON.parse(response);// JSON.stringify(response);
    }


    function sendUrl() {
        //发送消息
        // var url = mapXmlUrl;
        var url = document.getElementById("inputUrl").value;
        // var xmlSerializer = new XMLSerializer();
        // var str = xmlSerializer.serializeToString(featureRequest);
        var requestOpt = {
            type:'POST',
            contentType:'text/xml',
            data:"",
            success: function (req) {
                // 执行回调函数
                if (dealSuccessResponse){
                    dealSuccessResponse(req);
                }
            },
            timeout :10
        };

        this.sendRequest(url,requestOpt);

    }



    function sendRequest(url, opt) {
        //方法:fetch : https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch
        fetch(url,{
            method : opt.type,
            body: opt.data
        }).then(function (respone) {
            if (respone.ok){
                return respone;
            }
            throw new Error('Network respone was not ok.');
        }).then(function (respone) {
            if (opt.success){
                opt.success(respone);
            }
        })
    }


</script>
</body>
</html>

 

 

参考博客:

tomcat解决跨域问题 --解决了。

Tomcat通过CORS解决跨域问题  : 介绍了web.xml中的标签的简单含义。

 WebStorm本地调试的跨域问题 

  跨域问题(CORS / Access-Control-Allow-Origin)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值