大佬教程收集整理的这篇文章主要介绍了jquery – Access-Control-Allow-Origin不允许使用Origin但是定义了通配符?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
现在,我正在本地工作,具有以下配置:
>前端:http://127.0.0.1:9000
> API:http://127.0.0.1:9100
在我的API程序中,我定义了一个OPTIONS请求,它返回这些标头以及http状态代码200:
Access-Control-Allow-Headers:accept,origin,x-requested-with,content-type Access-Control-Allow-Methods:GET,POST,PUT,deletE,OPTIONS Access-Control-Allow-Origin:* Access-Control-Max-Age:15 Content-Length:0
使用jQuery,我向这个url发出Ajax请求.例如,这是OPTIONS查询的request标头:
Accept:*/* Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 Access-Control-request-Headers:accept,content-type Access-Control-request-Method:POST Connection:keep-alive Host:127.0.0.1:9100 Origin:http://127.0.0.1:9000 Referer:http://127.0.0.1:9000/login User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML,like Gecko) Chrome/26.0.1410.63 Safari/537.31
这取决于成功(状态代码:200 OK),然后按预期对http://127.0.0.1:9100/auth/login进行POST,但我在网络面板中得到了这个:
如果我查看控制台,我收到此错误:
但是,正如我们所看到的,Access-Control-Allow-Origin被定义为“*”.我还尝试将其更改为“127.0.0.1:9000”和“http://127.0.0.1:9000”,控制台上出现相同的错误.
现在,关于我的jQuery ajax命令的一些细节. ajax本身很简单:
jQuery.ajax({ 'url': '/auth/login','type': 'POST','data': {'login': 'abc','password': 'def'},'timeout': 15000 }).done(function (data,status,xhr) { console.log ('ok'); }).fail(function (xhr,description) { console.error('oups'); });
但是,通过jQuery.ajaxPrefilter方法添加API的基本URL:
jQuery.ajaxPrefilter (function (options) { var url = document.createElement('a'); url.href = optionS.Url; optionS.Url = 'http://127.0.0.1:9000' + url.pathname; });
这是为了避免在URL更改时更改多个文件.
我不知道这是否是问题的根源,但到目前为止我无法使POST请求工作,即使有关CORS配置的一切似乎都没问题.
我做错了什么 ?
Headers不仅可以在OPTIONS请求中使用,而且可以在所有请求上使用(甚至是GET / POST / PUT / deletE请求).
这就是为什么它不适合我.
以上是大佬教程为你收集整理的jquery – Access-Control-Allow-Origin不允许使用Origin但是定义了通配符?全部内容,希望文章能够帮你解决jquery – Access-Control-Allow-Origin不允许使用Origin但是定义了通配符?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。