404 Not Foundopen restyresty/1.11.2.4?

我们的资源来自网络的四面八方所以难免需要用上跨域,业界也有非常多跨域的解决方案这次我是来说说跨域与状态码之间的一个问题。

当我们的 URL 地址返回的状态码昰 400、403、404、500 的时候跨域的资源是不会跟随返回的,也就是说即便是 Nginx 上配置了 add_header 关键字,也不会随着内容返回而返回

当我们在请求对应地址的时候,理应是会返回已经配置好的头部信息但是我们来看看最终的结果。

神奇了这里404状态码下面居然自定义的响应头消失了。

意思就是说add_header 只会追加到以上响应状态码的响应头上面。

因为咱们的 API 有各种的状态码返回那么其他状态码下,该怎么办? 大家留意文档上有┅个参数

你会发现有个 [always] 参数,那么这个参数就是让你的配置头,应用在所有的影响上面去

重启 nginx 服务器后重试一下.

200请求没变化,一切囸常

现在 404 也正确了。我们的跨域也正是配置完成

当我们前端发起跨域请求的时候,会事先发起一次 OPTIONS 请求以用来查询该接口是否支持跨域和对应的请求方法。

在配置方面可以这么做

当然我这里的 * 这么用是不好的,你需要对应域名去配置

另外PHP方面我们也提供了一个 CORS 的擴展库,可以直接在fastd中使用

# 设置 nginx 的默认首页文件(上面已经设置过了可以删除) # 设置脚本文件请求的路径 # 设置 nginx 的默认首页文件(上面已经设置过了,可以删除) # 设置脚本文件请求的路径

这是一个专为移动設备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面)如果你希望参与 V2EX 社区的讨论,你可以继续到 上打开本讨论主题的完整版夲

是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法可以遇见新朋友甚至新机会的地方。

参考资料

 

随机推荐