V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zippera
V2EX  ›  程序员

chrome extension开发中,用jQuery.post()提交表单数据失败,chrome开发工具中的status显示cancelled,怎么破?

  •  
  •   zippera ·
    zippera · 2013-08-03 19:40:03 +08:00 · 6797 次点击
    这是一个创建于 4114 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是在本地调试的,action中的url是http的。找到一些资料说chrome不支持跨域访问(file和http)。

    有一个办法是使用get而非post。使用post就没法本地调试吗?有什么解决的办法?
    13 条回复    2014-11-17 11:51:46 +08:00
    mkeith
        1
    mkeith  
       2013-08-03 20:49:56 +08:00 via Android
    后台post
    zippera
        2
    zippera  
    OP
       2013-08-03 21:24:32 +08:00
    @mkeith 能再详细点吗?
    shiny
        3
    shiny  
       2013-08-03 22:19:23 +08:00
    Chrome扩展开发里,允许 post 是因为声明了需要的权限。在普通的 web 环境里是有严格的安全限制的。
    你所说的「本地调试」是指以 HTML 文件的方式调试吗?那还是搞成扩展吧,两者的环境差距还是很大的,而且在扩展里照样可以用审查元素。
    jesse_luo
        4
    jesse_luo  
       2013-08-04 04:17:08 +08:00
    改成ip访问形式试试……
    如果你是content script,默认是可以跨域的,只是要在manifest里加入权限,如:
    "permissions": [
    "tabs",
    "http://*.duokan.com/"
    ]
    zippera
        5
    zippera  
    OP
       2013-08-04 10:32:35 +08:00
    @shiny 我在本地调试用html文件直接打开、用本地加载扩展、用localhost的方法都不行,服务器地址是https的
    zippera
        6
    zippera  
    OP
       2013-08-04 10:33:58 +08:00
    @jesse_luo ip访问试了试,还是不行。没有用content script,加入url的权限后还是不行。请问除了$.post()外,还可以用别的方法提交吗?
    zippera
        7
    zippera  
    OP
       2013-08-04 10:35:24 +08:00
    错误信息:
    XMLHttpRequest cannot load https****. Origin http://127.0.0.1 is not allowed by Access-Control-Allow-Origin.
    jyhmijack
        8
    jyhmijack  
       2013-08-05 14:57:02 +08:00
    v8全是异步无阻塞的,把你post后面的内容全部写在post的回调里面就好了。
    otakustay
        9
    otakustay  
       2013-08-05 15:23:51 +08:00
    撞上XMLHttpRequest的跨域安全性了
    你的服务器要接受一个OPTIONS(不是POST,是OPTIONS)请求,并在这个请求中返回一个HTTP头Access-Control-Allow-Origin: *;然后这个post请求才能成功
    zippera
        10
    zippera  
    OP
       2013-08-05 20:18:03 +08:00
    @jyhmijack
    @otakustay
    已经在服务器端设置Access-Control-Allow-Origin: *。也已经尝试用post的回调函数,还是无法提交。

    使用的代码类似 $.post( url, term,function(data){alert("dlg");} );功能是提交登录表单。

    奇怪的是,账号密码错误的时候能顺利执行,正确的时候就出现错误(如下)。(错误的时候response的页面跟提交的url一样;正确的时候会有个页面跳转,会不会是这个问题?)

    错误信息截图如下:

    gangsta
        11
    gangsta  
       2013-08-05 22:27:33 +08:00
    Content Script+1,直接支持跨域,不受同源策略的限制
    ysdj
        12
    ysdj  
       2013-08-05 22:28:53 +08:00
    chrome扩展似乎不支持https跨域?
    scofier
        13
    scofier  
       2014-11-17 11:51:46 +08:00
    我用$.post("xxx",
    {"title":d.title,"url":d.url,"content":con},function() {
    alert("ok");
    });

    发现con字段太大,字符串长度8000多, 就执行不了, 难道chrome扩展里面post限制了长度? 纯浏览器执行jquery的post是可以正常post数据的, 有人遇到过这种问题吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5600 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:05 · PVG 14:05 · LAX 22:05 · JFK 01:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.