没有CORS或JSONP的跨域请求
我知道之前已经问过这个问题,但没有一个答案对我有用! 我正在做一个学校项目,我想得到学校服务器上动态调度文件返回的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”标头。 因此不允许原点’null’访问。 响应具有HTTP状态代码501。
当我添加:
dataType:'jsonp'
我收到错误:
获取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.js :4(匿名函数)
任何帮助是极大的赞赏!
浏览器强制执行“同源”访问控制,除非站点明确允许跨源请求(通过CORS或JSONP)。 因此,如果您尝试访问的站点不允许跨源请求,则无法使用浏览器直接从站点获取数据。 它根本不允许它(出于合法的安全原因)。
这意味着您需要使用某种可以为您获取数据的第三方代理。 最常见的两种方法是:
-
你自己的服务器。 您向自己的服务器发出请求以从其他服务器获取某些内容。 然后,您的服务器从其他服务器获取数据并在浏览器中将其返回给您。
-
代理服务器。 有一些预配置的代理服务器只是为了执行选项#1中描述的内容而构建的。 您可以使用代理服务或安装自己的代理服务器为您执行此操作,也可以配置您自己的Web服务器以具备此function。
我知道当技术限制使生活更加艰难时会有多么令人沮丧。
对于这种情况,您可以尝试Javascript库: Xdomain
你可以在这里查看参考文章: http : //hayageek.com/cross-domain-ajax-jquery-without-cors/
如果您遇到问题,YCombinator讨论可能会有所帮助: https ://news.ycombinator.com/item?id = 8023844
另一种方法是,使用您的服务器获取HTML页面,并在需要时推送到您的应用程序。 像这样的东西。 假设您已将一个iframe添加为“my_external_content.php” 。 代码应该是
请参考SO上的其他问题以获得一些参考: 绕过同源政策的方法
希望这可以帮助您或其他处于相同情况的人。