org.scalajs.dom.ext.ajax.post上的错误代码405
error code 405 on org.scalajs.dom.ext.ajax.post
我正试图从scalajs对我的(akka-http)后端进行post调用。
同样的呼叫在poster中工作,但当我实际从chrome-scalajs 呼叫时失败了
scalajs 中的代码
ext.Ajax.post(<url>, <json>, headers = Map("Content-Type" -> "application/json"))
我在铬控制台中得到以下错误
XMLHttpRequest cannot load <url>. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 405.
当我在poster中查看javascript的代码(生成代码片段)时,我看到了以下
var settings = {
"async": true,
"crossDomain": true,
"url": <url>,
"method": "POST",
"headers": {
"content-type": "application/json",
"cache-control": "no-cache",
"postman-token": "273f35c9-1d2a-12d8-30d6-8523d479869e"
},
"processData": false,
"data": <json>
}
$.ajax(settings).done(function (response) {
console.log(response);
});
如前所述,我可以从poster访问我的后端,不确定scalajs中缺少什么,我在考虑crossDomain
设置,但如果是这样,我不知道如何在scalajs请求中设置它。
可能有一些显而易见的解决方案。
同样,get请求实际上正在工作
编辑:我正在添加后端部分akkahttp路由器
respondWithHeaders(`Access-Control-Allow-Origin`.*, `Access-Control-Allow-Methods`(HttpMethods.GET, HttpMethods.POST),
`Access-Control-Allow-Headers`("Origin, X-Requested-With, Content-Type, Accept, Authorization")) {
pathPrefix("..."){...
这是目前的状态,所以我缺少什么?
谢谢你的帮助。
这里发生的事情是,chrome阻止您访问后端,因为:
- 后端服务器与您的JavaScript位于不同的域上
- 后端服务器不明确允许JavaScript所在的域进行调用(这就是
Access-Control-Allow-Origin
标头的含义) - Chrome(而不是后端)因此阻止了该请求
由于此检查发生在前端/chrome中,因此该请求与poster配合得非常好。
因此,为了正确修复此问题,您应该配置akka-http以添加正确的Access-Control-Allow-Origin
标头。
如果您只需要测试,您可以使用标志--disable-web-security
启动chrome。请非常小心,因为这会让你(作为互联网用户)容易受到CSRF和其他讨厌的忙碌的影响请勿始终使用此标志。
相关文章:
- 咕噜声.js无法读取文件(错误代码:EISDIR)
- 科尔多瓦指南针 API 给出错误代码 3
- 如何在使用JavascriptCallbackBehavior时引发带有HTTP错误代码的WebFaultExcepti
- 解析错误代码 121
- Ajax get jsonp给出错误代码500“;请求被阻止”;来自MVC应用程序
- ionic http获取到本地文件会给出http错误代码0
- Imacros/jQuery TypeError:无法访问死对象,第 816 行(错误代码:-991)
- 电话差距/网络数据库错误代码说明
- NaN 错误代码有什么问题
- 异常:“远程主机关闭了连接.错误代码为 0x80070057”
- 咕噜声/巴别塔错误:无法写入“dist”文件(错误代码:EISDIR)
- 内部服务器错误在 post 请求中使用 Angular js 中的自定义服务
- 科尔多瓦的文件传输写入错误(代码 1)
- 角度$asyncValidators将错误代码传输到模板
- 接收错误代码 3,http_status空,正文空,异常状态 2
- 运行 grunt.file.copy 返回错误代码:ENOENT
- Parse.com 找不到错误代码:141 函数
- 尝试运行作业时分析错误代码 1 内部错误
- org.scalajs.dom.ext.ajax.post上的错误代码405
- Ajax POST调用不能正常工作,返回错误代码0,即使url POST成功