vue跨域问题

请求接口时,报错信息如下
clipboard.png

XMLHttpRequest cannot load http://mod.pmit.cn/NewsB/GetN... A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true. Origin 'http://localhost:8080' is therefore not allowed access. The credentials mode of an XMLHttpRequest is controlled by the withCredentials attribute.

clipboard.png

阅读 7.6k
4 个回答

如果前端请求开启 withCredentials: true 后台接口也需要对应的将 Access-Control-Allow-Credentials 设为 true

其实很多人并没有真正的理解 CORS,除了 Access-Control-Allow-MethodsAccess-Control-Allow-Origin 之外还有几点要注意的:

  1. Access-Control-Allow-Headers:如果请求头带了 Access-Control-Request-Headers 相应的服务端也要加 Access-Control-Allow-Headers 而且两个值相同。

  2. Access-Control-Allow-Credentials:如果请求加了 withCredentials: true 服务端也要将此设为 true

  3. The value of "*" is special in that it does not allow requests to supply credentials, meaning HTTP authentication, client-side SSL certificates, nor does it allow cookies to be sent.

楼主,遇到类似的问题,可以先搜索下社区。
看看这个问题。如果是使用vue-cli
https://segmentfault.com/q/10...

另外,如果本地调试,建议使用更方便的 chrome 跨域方案
chrome 跨域

因为你设置了withCredentials: true这个跨域参数,所以Access-Control-Allow-Origin 这个参数不能设置为 * 了,需要设置对应的一个或者几个域名。。

另外注意当你发起PUT这类特殊请求的时候,设置OPTIONS的响应也允许跨域,不然即使POST跨域成功,PUT这类请求同样会报跨域的错。。

CORS方案中,如果有用到Cookie,在IE下,还需要指定P3P的响应头。。。

推荐问题
宣传栏