• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zippera
V2EX  ›  程序员

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

  •  
  •   zippera ·
    zippera · Aug 3, 2013 · 7407 views
    This topic created in 4740 days ago, the information mentioned may be changed or developed.
    我是在本地调试的,action中的url是http的。找到一些资料说chrome不支持跨域访问(file和http)。

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

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

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

    错误信息截图如下:

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

    发现con字段太大,字符串长度8000多, 就执行不了, 难道chrome扩展里面post限制了长度? 纯浏览器执行jquery的post是可以正常post数据的, 有人遇到过这种问题吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3305 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 11:34 · PVG 19:34 · LAX 04:34 · JFK 07:34
    ♥ Do have faith in what you're doing.