使用 node 的 hapi 框架,起了 API service. 再在一个项目里面通过 ajax 去请求这个 API 发生跨域问题.
route.options.cors
Default value: false (no CORS headers).
The Cross-Origin Resource Sharing protocol allows browsers to make cross-origin API calls. CORS is required by web applications running inside a browser which are loaded from a different domain than the API server. To enable, set cors to true
这个是 hapi 的文档,开启这个就可以允许 ajax 的跨域请求了.
实际上,确实也可以成功的发送了 ajax 的 get 请求.如图:
问题出现在 发送 PUT 请求:
看起来是不允许我发送 MIME type application/json
数据.
那我把 ajax 函数里面的
headers:{
contentType:"application/json"
},
去掉再请求:
发现已被允许请求.
返回 500 是因为,我的 API 是按 json 接受解析的. 比如 user 下 id 的值 是 this.request.payload.User.id
来获取的. 但是如果是 x-www-from 格式的数据, 则要改变为 this.request.payload.User[id]
来获取.
我想知道这个 put 发送 json 数据的请求不被允许是哪里出了问题.
cors 选项配一下
additionalHeaders
.这样你客户端就可以带
contentType:"application/json"
头了