Chrome扩展程序jquery Ajax预检OPTIONS

时间:2016-12-16 23:17:57

标签: jquery google-chrome-extension cors preflight

我需要从Chrome扩展程序访问网络应用的API后端。来自网页本身的xhr请求始终是预检(OPTIONS)。但是,我无法获得启动预检请求的扩展,它会触发GET请求,服务器授权机制会先拒绝调用而不使用OPTIONS。

我读了stackoverflow上可用的内容,并试图添加一个随机的" x-weird-header"试图首先发送预检,但它没有工作。

另一件我无法理解的事情是,Chrome发送了一个" Origin"来自网页的来电的标题但来自我的扩展程序的请求缺少" Origin"头。

如何首先发送OPTIONS?为什么" Origin"我的请求中缺少?

谢谢!



	$.ajax({
	  url : url, /* url is https and it is called from a non ssl but same domain origin*/
	    type : 'GET',
	    beforeSend : function( xhr ) {
	        xhr.setRequestHeader( "Accept", "application/json, text/plain, */*");
	        xhr.setRequestHeader( "Authorization", "BEARER " + auth_token );
	        xhr.setRequestHeader( "x-weird-header", "utf8" );
	    },
	    success : function (data) {
	      console.log(data);
	    },
	    error : function (data, errorThrown) {
	      console.log(data);
	    }
	});




1 个答案:

答案 0 :(得分:0)

我认为阅读Cross-Origin XMLHttpRequest可能会对此有所帮助。您的chrome扩展程序正在向远程服务器发出请求,因此您需要跨域权限。关于您的OPTIONS问题,请尝试使用此SO thread中提到的此选项:

  

Access-Control-Allow-Headers:Content-Type,Accept,X-Requested-With,   会话