suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Warum kann $.post() in JQuery keine Daten domänenübergreifend übermitteln?

Warum kann die in jquery gekapselte Ajax-Methode JSONP verwenden, um Daten in der Get-Methode zu übermitteln, aber die Post-Methode direkt verwenden, um Daten domänenübergreifend zu übermitteln?

習慣沉默習慣沉默2781 Tage vor644

Antworte allen(3)Ich werde antworten

  • 世界只因有你

    世界只因有你2017-05-16 13:38:50

    jquery自身的功能是不支持的,但是你可以基于jquery实现跨域post。

    jquery本身只支持jsonp跨域,但是jsonp的原理限制了只能支持get。

    如果想要实现原生jquery跨域,在你的请求地址的head里面加上Access-Control-Allow-Origin,值设置成调用该API的域名(或者*)

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:38:50

    跨域一般分两种:

    1. jsonp 跨域。 jsonp 本来就是使用 get 文件的方法绕过跨域检查,所以不支持post。也有第三方库用get来模拟post请求。

    2. COR 跨域。 COR 跨域需要修改服务端 Access-Control-Allow-Origin 响应。 一般客户端会发送两次 post 请求,第一次类型为 option,服务端响应允许后,第二次发送真正的带数据的请求。
      如果答主条件许可,尽量使用第二种跨域方法吧,可以直接支持 post。

    如果无法修改服务端配置,答主可以去找一下第三方的库,看看能否用jsonp模拟 post 请求。

    Antwort
    0
  • 阿神

    阿神2017-05-16 13:38:50

    注意,不是jquery不支持,而是浏览器在没有允许跨域的头的时候,就把响应拦截掉了,然后给你了个错误。jquery在接收到这个错误之后,就会给你报跨域的错误。
    你可以抓个包看看(注意不要用浏览器的f12抓包),其实服务端的响应都在的。

    Antwort
    0
  • StornierenAntwort