我正在使用chrome扩展,它使用GET方法发送HTTP请求.
如何使用值发送www.example.com参数?par0
www.example.com?par=0
Run Code Online (Sandbox Code Playgroud)
(服务器读取参数par并做一些事情)
我找到了这篇文章,谈论了Cross-Origin XMLHttpRequest.但我不知道他们的例子如何帮助我.
javascript google-chrome get xmlhttprequest google-chrome-extension
Chrome更新之前,我的代码运行正常。
我向服务器发出ajax调用。我的服务器收到呼叫,将JSON返回给客户端,但是答案始终为空。当我查看Fiddler时,会从服务器得到答案。
我尝试使用JQuery,也尝试使用xmlhttp调用。总是一样的结果
是否有新的CORS政策规则适用?
有我的xmlHTTP调用
var xmlhttp = new XMLHttpRequest(); // new HttpRequest instance
var theUrl = "URL";
xmlhttp.open("POST", theUrl);
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send('{ "args" :{ "Obj":"my obj"}}');
xmlhttp.onreadystatechange = function(state,xhh,aaa){
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
alert(xmlhttp.responseText);
}
}
Run Code Online (Sandbox Code Playgroud)
Ajax调用类似
$.ajax({
url: "URL",
data: '{ "args" :{ "Obj":"my obj"}}',
dataType: "json",
contentType: "application/json; charset=utf-8",
type: "POST",
async: false,
error: function (xhr, ajaxOptions, thrownError) {
if (that.Fail != null) {
that.Fail();
}
},
success : function(data){
alert(data);
}
})
Run Code Online (Sandbox Code Playgroud) ajax google-chrome google-chrome-extension cors cross-origin-read-blocking
在我的本地计算机上,我一直使用--disable-web-security --user-data-dir来禁用Web安全性.升级到Chrome版本66后,我已开始通过...警告接收跨站点文档阻止当前来源.如何禁用此版本的Chrome的Web安全性?
我正在制作 chrome 扩展,我需要向另一个域发出跨域 POST 请求。代码在 ChromeContent Script环境中运行,有一些限制。
我将我的代码注入到域看起来像的特定站点中,service.site.com我必须向域发出请求api.site.com
来自的响应标头api.site.com看起来像
access-control-allow-credentials: true
access-control-allow-headers: Authorization, Content-Type, X-Requested-With, Accept
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-origin: https://service.site.com
Run Code Online (Sandbox Code Playgroud)
如您所见,另一个域允许来自service.site.com. 这意味着我的请求标头的Origin标头应包含该 Origin。
但是 chrome 扩展为我添加了一个 Origin 标头!
现在它发送一个api.site.com带有标头的请求
Origin: chrome-extension://oeminagccdkclchnelmkbkcpcfnjgofj
Run Code Online (Sandbox Code Playgroud)
并api.site.com可能阻止它?我没有收到任何回复。请求崩溃,我没有看到错误,也没有响应数据。
当然我在清单文件中添加了权限:
"permissions": [
"*://service.site.com/*",
"*://api.site.com/*"
],
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用。Chrome 扩展程序继续更改 Origin 标头并且服务器没有响应。或者它是否响应但我的浏览器阻止了它?我查不出来。如果我在 WEB 脚本环境中运行该请求,它运行良好,我会看到来自服务器的响应。但是我仍然必须在 Content-script 环境中运行它。
我什至尝试在 web 脚本环境中注入一个带有 post 请求的函数,并从内容脚本环境调用它,但如果我这样做,它会添加 Origin 标头并且它不起作用。
我还尝试使用 Chrome 扩展功能更改响应标头,希望能有所帮助
const responseListener = function(details){
const …Run Code Online (Sandbox Code Playgroud) 我想知道Google Chrome扩展程序是否可以发出HTTP请求并解析结果的正文(如Curl).例如,有一个服务器1.2.3.4 ?a=1&b=2通过汇总URL参数来回答问题.查询"http://1.2.3.4?a=1&b=2"将返回包含的主体3,我的扩展程序想要提交此类查询并解析结果.
任何帮助,将不胜感激.