- 34
- 0
浏览器:chrome 96。问题描述:我在test.html中使用了jsonp请求,发现浏览器报了跨域的错误。了解jsonp的都知道jsonp就是动态创建一个script标签引用服务器返回的js代码,这段代码里面写了一个函数调用。那么就是说我引用外域的JS文件会导致跨域问题,但是很奇怪的是,我的代码里也引用的cdn加速的jquery文件啊,这个Jquery文件和我的html文件也没在一个服务器啊,为什么jquery这个script链接不报跨域错误呢?那么是不是说可以通过配置服务器来解决这个问题呢? 我尝试了取消使用jsonp求请求去获取这个文件,改成直接在html文件写入script标签来引用这个文件,果然还是出现了跨域的问题。 请问如果处理这个问题?可以直接更改我要请求的服务器的配置来解决么?尽量不使用nginx反向代理来解决。 因为我希望这个jsonp请求能像引用jquery的cdn链接一样简单。有同学要我贴代码以及让我在不同浏览器尝试,其实我是有尝试的,我再补充下相关说明补充说明:我在chrome96中是有跨域问题的,但是IE11中是没有问题的。代码:<html><head> <meta http-equiv="Content-Type" content="text/html; " charset="UTF-8"> <script type="text/javascript" src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript"> function doSubmit() { var username = document.getElementById("username").value.trim(); var password = document.getElementById("password").value.trim(); if (username === "") { window.alert("请输入用户名"); return false; } if (password === "") { window.alert("请输入密码"); return false; } var url = "http://000.000.000.000:8081/webroot/decision/login/cross/domain" + "?fine_username=" +encodeURIComponent(username) + "&fine_password=" + encodeURIComponent(password) + "&validity=" + -1; alert(url); jQuery.ajax({ url: url,//单点登录的管理平台报表服务器 timeout: 5000,//超时时间(单位:毫秒) dataType:"jsonp",//跨域采用jsonp方式 jsonp:"callback", success: function (res) { console.log(res); if (res.errorCode) { window.alert(res.errorMsg); }else { // 保存token并跳转到对应链接 window.location.href = "http://localhost:8080/webroot/decision"; } }, error: function () { alert("超时或服务器其他错误");// 登录失败(超时或服务器其他错误) } }); } function callback (res) { console.log('script',res) } </script></head><body><p>请登录</p><form id="login" name="login" method="POST" action=""> <p>用户名:<input id="username" type="text" name="username"/></p> <p>密 码:<input id="password" type="password" name="password"/></p> <input type="button" value="登录" onClick="doSubmit()"/></form><script src="http://000.000.000.000:8081/webroot/decision/login/cross/domain?fine_username=admin&fine_password=Aa123456&validity=-1"></script></body></html>chrome报错截图
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
锁顁婞福 普通会员 1楼
JSONP(JSON with Padding)是一种允许客户端在不改变服务器端代码的情况下,通过JavaScript向服务器获取JSON数据的技术。然而,它目前无法在跨域请求中使用,这是因为它依赖于浏览器的同源策略。
同源策略规定,如果两个源的协议、域名和端口号不同,那么它们之间的数据传输是受限的。JSONP允许两个来源共享同一个服务器端资源,但是这种共享并不意味着它们的协议、域名和端口号必须完全相同。
如果两个来源的协议、域名和端口号不同,那么它们之间的数据传输就会受限。因此,JSONP无法在跨域请求中使用,因为它依赖于同源策略。
为了解决这个问题,可以使用CORS(Cross-Origin Resource Sharing)技术。CORS允许服务器在接收到跨域请求时,返回一个Access-Control-Allow-Origin响应头,指示客户端可以使用哪个源来访问服务器的资源。
这样,即使两个源的协议、域名和端口号不同,客户端也可以通过CORS技术向服务器请求JSON数据。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
