当前位置: 首页 > 面试题库 >

没有CORS或JSONP的跨域请求

漆雕奇
2023-03-14
问题内容

我知道以前曾问过这个问题,但是没有一个答案对我有用!我正在做一个学校项目,我想获取学校服务器上动态计划文件返回的HTML(为我的项目解析)。

我想要HTML的页面是:https
:
//telaris.wlu.ca/ssb_prod/bwckschd.p_disp_dyn_sched

我认为未为学校服务器文件启用CORS,并且我不知道它是否支持JSONP …

如何设置跨域请求以从该页面获取HTML?

我努力了:

$.ajax({
    type:'POST',
    url: 'https://telaris.wlu.ca/ssb_prod/bwckschd.p_disp_dyn_sched',
    headers: {
      'Access-Control-Allow-Origin': '*'
   },
   contentType: 'text/html',
   crossDomain:true
}).done(function( data ) {

});

我得到错误:

XMLHttpRequest无法加载
https://telaris.wlu.ca/ssb_prod/bwckschd.p_disp_dyn_sched。所请求的资源上没有“
Access-Control-Allow-Origin”标头。因此,不允许访问原始“空”。响应的HTTP状态码为501。

当我添加

dataType:'jsonp'

我得到错误:

GET
https://telaris.wlu.ca/ssb_prod/bwckschd.p_disp_dyn_sched?callback=jQuery21108736664191819727_1416964243449&_=1416964243450
400(错误请求)jquery.min.js:4send jquery.min.js:4n.extend.ajax jquery.min。
:4(匿名函数)

任何帮助是极大的赞赏!


问题答案:

除非站点明确允许跨源请求(通过CORS或JSONP),否则浏览器将强制执行“同源”访问控制。因此,如果您尝试访问的站点不允许跨源请求,那么您将无法仅使用浏览器直接从站点获取数据。浏览器正在实施与目标站点相同的原产地限制。

对于服务器而言,这根本不是安全的,因为围绕它有很多方法。它仅适用于来自浏览器的一种特定类型的访问(尽管一种特定类型的访问保护很有用)。

这意味着要将数据获取到浏览器中,您将需要使用某种第三方代理(浏览器除外)才能为您获取数据。两种最常见的方式是:

  1. 您自己的服务器。您请求自己的服务器从其他服务器获取一些内容。然后,您的服务器从另一台服务器获取数据,然后在浏览器中将其返回给您。

  2. 代理服务器。有一些预配置的代理服务器是为执行选项#1中描述的操作而构建的。您可以使用代理服务或安装自己的代理服务器来为您执行此操作,也可以将自己的Web服务器配置为具有此功能。

因此,您无法绕开合作浏览器的跨源限制。但是,您可以从服务器绕过它们。这是因为COR限制仅在浏览器中实现。它们不是服务器强制的限制。浏览器询问目标服务器正在使用哪些CORs策略,并仅在浏览器中实施它们。向该服务器发出请求的其他某些服务器不需要关注CORs策略。



 类似资料:
  • 本文向大家介绍跨域请求两种方法 jsonp和cors的实现,包括了跨域请求两种方法 jsonp和cors的实现的使用技巧和注意事项,需要的朋友参考一下 在网站后台跨域访问另一服务器时,若被访问服务器未设置response[‘Access-Control-Allow-Origin'] = ‘*' 那么将无法获取。 jsonp方法 伪造ajax提交请求 请求端 服务端 jsonp获电视台节目案例 取到

  • 本文向大家介绍详细解密jsonp跨域请求,包括了详细解密jsonp跨域请求的使用技巧和注意事项,需要的朋友参考一下 1.什么是跨域请求: 服务器A上的一个页面,要请求服务器B上的一个处理程序,这就叫做跨域请求 本次的测试页面为: 处理程序kimhandler.ashx,如下: 另一张处理程序handler.ashx如下: 2.Ajax无法实现跨域请求 查看监视器,发现没有返回任何请求报文体 3.使

  • 我理解的JSONP的方式就是,通过JS代码,动态创建一个Script标签,通过标签的src的网址里面包含一个JSONP属性,后端接收到后返回一个url中jsonp=参数,这样一个参数(包含一个json),通过执行这个参数命名的函数来实现跨域。 以下是JS中的代码 var util = {}; /*[function 在页面注入脚本]*/ util.createScript = function(u

  • 问题内容: 我有一个简单的PHP脚本,正在尝试跨域CORS请求: 但是我仍然得到错误: 请求标头字段不允许 我有什么想念的吗? 问题答案: 不允许作为可接受的值,请参阅此处的Mozilla文档。 您应该发送可接受的标头(而不是如星号所示)而不是星号。

  • 下面的问题怎么解决?

  • 本文向大家介绍详解SpringBoot多跨域请求的支持(JSONP),包括了详解SpringBoot多跨域请求的支持(JSONP)的使用技巧和注意事项,需要的朋友参考一下 在我们做项目的过程中,有可能会遇到跨域请求,所以需要我们自己组装支持跨域请求的JSONP数据,而在4.1版本以后的SpringMVC中,为我们提供了一个AbstractJsonpResponseBodyAdvice的类用来支持j