`
flex_莫冲
  • 浏览: 1085036 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

CORS 远程请求

阅读更多
不同域的远程访问之前是用jsonp,但是只能支持get请求,而且写法也很恶心。现在HTML5都来了,应该优先用CORS
前端请求代码
function createCORSRequest(method, url) {
					var xhr = new XMLHttpRequest();
					if ("withCredentials" in xhr) {
						// 此时即支持CORS的情况
						// 检查XMLHttpRequest对象是否有“withCredentials”属性
						// “withCredentials”仅存在于XMLHTTPRequest2对象里
						xhr.withCredentials = true;
						xhr.open(method, url, true);
					//	xhr.setRequestHeader('Content-Type', 'application/json');
						//xhr.onreadystatechange = handler;
					} else if ( typeof XDomainRequest != "undefined") {
						console.log("ie support");
						// 否则检查是否支持XDomainRequest,IE8和IE9支持
						// XDomainRequest仅存在于IE中,是IE用于支持CORS请求的方式
						xhr = new XDomainRequest();
						xhr.open(method, url);

					} else {
						// 否则,浏览器不支持CORS
						xhr = null;
					}
					return xhr;
				}

				var request_url = "http://xxx?apiVersion=2&appID=64&filter=NM&pageSize=&page=&scale=2";
				var xhr = createCORSRequest('GET', request_url);
				if (!xhr) {
					throw new Error('CORS not supported');
				}
				xhr.send();


服务器端配置。首先apache要安装headers模块。
执行 a2enmod header
然后重启apache 检查是否安装,要进入phpinfo查看 load modules中有无mod_headers

然后在网站的htaccess中添加以下配置
<IfModule mod_headers.c>
	Header set Access-Control-Allow-Origin "http://xxxx"
	Header set Access-Control-Allow-Credentials true
</IfModule>


请注意,如果server中返回结果又做了header跳转,这种跳转请求是不被CORS允许的。会报错。
分享到:
评论

相关推荐

    proxy:HTTP请求代理,CORS跨域请求,HTTPS支持(cors-anywhere)

    HTTP请求代理,CORS跨域请求,HTTPS支持 功能 支持跨域请求(转换不支持跨域请求的接口),并直接启动ajax,fetch 支持HTTPS(解决远程数据接口不支持HTTPS) 用 主机/ {URL} // Copy to the console to run var $...

    cors,谷歌插件,破除下载图片空白

    例如,当用户在Markdown编辑器中插入远程图片时,如果这些图片的源服务器没有启用CORS,图片可能无法显示。此时,"allow-cors-access-control"插件可以帮助用户绕过这一限制,确保图片正常加载。 文件名称"allow-...

    Local-CORS-crx插件

    Web开发人员需要使用此扩展,这些开发人员需要根据不允许本地CORS请求的远程API测试本地计算机上的UI更改。 在启用此扩展之前,请确保您了解CORS的工作方式...

    创建Maven工程有时缺失(jmxri.jar+ring-cors.jar+jmsjar+jmxtools.jar),四合一

    其次,`ring-cors-0.1.5.jar` 是一个用于Clojure Ring中间件的库,它处理CORS(Cross-Origin Resource Sharing)请求。CORS是一种机制,允许浏览器从不同源(域)加载资源,增强了Web应用的交互性。`ring-cors`...

    pdfjs跨域展示远程pdf文件

    在处理跨域问题时,由于同源策略的限制,直接加载远程PDF可能会遇到问题。本篇文章将详细介绍如何利用PDFJS和SpringBoot构建一个能够跨域展示远程PDF文件的服务。 首先,理解“跨域”(Cross-Origin)的概念至关...

    Jquery跨域Ajax请求测试

    $.ajax()可以接受一系列参数,其中关键的两个是`url`(指定要请求的远程服务地址)和`dataType`(指定返回数据的类型,如json、xml等)。为了实现跨域,我们需要设置`dataType`为`jsonp`。JSONP(JSON with Padding...

    CORS Unblock-crx插件

    启用后,通过将“ Access-Control-Allow-Origin:*”标头附加到本地和远程Web请求中,不会再出现CORS错误 此扩展通过为浏览器收到的每个请求提供自定义的“ access-control-allow-origin”和“ access-control-allow...

    httpclient 跨域请求

    在IT行业中,网络通信是应用程序之间交互的重要方式。当我们谈论跨域请求时,这是一个与Web安全策略相关的概念,主要是浏览器为了...确保正确配置服务器端的CORS策略,以允许来自指定源的跨域请求,从而完成整个流程。

    ajax跨域请求WebService.asmx

    总结,Ajax跨域请求WebService.asmx是一个结合了前端JavaScript异步请求技术和后端C# Web服务交互的实例,它涉及到了跨域策略、HTTP通信、CORS配置以及JSON数据交换等多个Web开发的重要知识点。正确理解和运用这些...

    html通过 ajax jsonp跨域请求接收和传送数据

    HTML通过AJAX和JSONP跨域请求常用于获取远程API数据、实时更新网页内容、用户认证等场景。例如,社交网站获取用户信息、新闻网站动态加载评论、电子商务网站实时显示库存等。 综上所述,HTML借助AJAX和JSONP,可以...

    Asp+Js读取远程xml文件

    当我们需要在Asp页面中利用JavaScript来读取远程XML文件时,会涉及到跨域问题,因为出于安全考虑,浏览器默认不允许跨域请求。 首先,让我们详细了解一下XML(eXtensible Markup Language)。XML是一种标记语言,常...

    portproxy:TCP 代理,劫持 HTTP 以允许 CORS

    端口代理一个糟糕的 TCP 代理,它将所有请求中继到本地端口到远程服务器。 portproxy -port 8080 -raddr google.com:80将代理localhost:8080上的所有 TCP 请求并...动机此代理的唯一目的是绕过不执行 CORS 的远程 API。

    ajax跨域请求调用webservice接口+视频教程

    为了解决这个问题,我们可以利用CORS(Cross-Origin Resource Sharing,跨源资源共享)机制,服务器通过设置响应头`Access-Control-Allow-Origin`来允许特定的跨域请求。 在调用WebService接口时,我们首先需要了解...

    jQuery跨域请求,获取返回值

    然而,jQuery提供了一种跨域请求的方法,允许我们绕过这一限制,获取远程服务器的数据。这篇博客将探讨如何使用jQuery实现跨域请求以及如何获取返回值。 首先,我们需要理解什么是跨域请求。跨域请求是指一个域下的...

    shelly-cors-examples

    Shelly设备通常可以通过HTTP或HTTPS接口进行远程控制和配置,这可能涉及到跨域请求。例如,你可能有一个运行在某个域名下的Web应用,希望通过JavaScript来控制在不同域名下的Shelly设备。在这种情况下,Shelly设备的...

    Java web使用pdf.js在线预览远程服务器上的pdf文件

    你可以通过配置你的Java服务器,设置适当的CORS策略,允许PDF.js进行跨域请求。 6. **优化和交互**:你可以进一步定制预览体验,比如添加页码导航、缩放、搜索等功能。pdf.js提供了API来获取和操作PDF页面,实现...

    dealwithcors:CORS机制

    文档 ##简单请求Lorsque je fais une requête AJAX simple (Simple requests) depuis mon browser http:localhost:8888 unservice JSON 远程http:localhost:3000 。 Rappel:一个简单的跨站点请求是: 仅使用 GET...

Global site tag (gtag.js) - Google Analytics