我试图在ajax的帮助下调用API。
200 statuscode
调用ajax后,这是firefox中的响应:
你可以在图片中看到,我得到了Object { readyState: 0, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 11 more… }
,在回复中,我收到了我的JSON数据。
在调用ajax之后,下面是控制台的快照。
下面是错误对象:
Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'url I passed in ajax'. at Object.send (https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:4:14955) at Function.ajax (https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:4:10579) at HTMLButtonElement.<anonymous> (http://mywebsitestatic.s3-website-us-west-2.amazonaws.com/:258:4) at HTMLButtonElement.dispatch (https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:3:6404) at HTMLButtonElement.r.handle (https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js:3:3179)
在挖掘对象后发现错误:
{{1}}
任何想法是什么错误。
我试图从stackoverflow.com中引用很多问题,但没有人与我的方案匹配。 谁能告诉我哪里出错了?
答案 0 :(得分:1)
这是一个Cross Origin Resource Sharing (CORS)
问题。要解决此问题,您必须在服务器中添加以下2个响应标头:
setHeader("Access-Control-Allow-Origin:", "origin url of your site");
setHeader("Access-Control-Allow-Methods", "GET, POST, PUT");
要确认这是CORS
问题,您可以通过以下方式从控制台打开此chrome
中的此安全检查,并尝试使用该网址,
视窗:
chrome.exe --allow-file-access-from-files
chrome.exe --allow-file-access-from-files --disable-web-security
的Mac:
open /Applications/Google\ Chrome.app/ --args --allow-file-access-from-files
注意:修复方法是在您尝试从JQuery POST
请求中访问的服务器中设置上述响应标头。
启用CORS的AWS链接:
http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html
参考文献 :(了解有关CORS
)