【问题标题】:Options Request Successful but still getting Access-Control-Allow-Origin Error选项请求成功,但仍然出现 Access-Control-Allow-Origin 错误
【发布时间】:2013-05-22 17:10:42
【问题描述】:

我正在从 Backbone 应用程序发出 DELETE 请求,但不确定为什么它会失败并出现如下所示的错误。

选项标题

这是我的 OPTIONS 标题,它是 200 Success

请求:

OPTIONS /revenues/674sf6 HTTP/1.1
Host: api2.revparmax.local
Connection: keep-alive
Access-Control-Request-Method: DELETE
Origin: http://localhost:3000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) ....
Access-Control-Request-Headers: token, accept, origin, x-requested-with, content-type
Accept: */*
Referer: http://localhost:3000/app/daily/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

回复:

HTTP/1.1 200 OK
Date: Mon, 27 May 2013 20:01:32 GMT
Server: Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1...
X-Powered-By: PHP/5.3.1
Access-Control-Allow-Origin: http://localhost:3000
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept, TOKEN
Access-Control-Max-Age: 86400
Content-Length: 2
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8

删除标题

但是后来我的删除请求失败了……

请求:

DELETE http://api2.revparmax.local/revenues/674sf6 HTTP/1.1
TOKEN: 00899766786875875674557454
Accept: application/json, text/javascript, */*; q=0.01
Referer: http://localhost:3000/app/daily/
Origin: http://localhost:3000
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) ....
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

错误

XMLHttpRequest cannot load http://api2.revparmax.local/revenues/674sf6. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.

注意

哦 - 我应该提到模型仍然从服务器中删除,但我的问题是我的骨干应用程序中延迟的 Ajax 都因为这个错误而被抛出。

另外,我的请求负载在失败时是 [object Object] - 这会导致问题吗?

【问题讨论】:

  • DELETE 响应是什么样的?
  • 无响应 - PUT 和 GET 请求也都能正常工作 - 我认为这与请求有效负载有关

标签: javascript ajax rest backbone.js xmlhttprequest


【解决方案1】:

您在运行 Chrome 吗?如果是这样,那么您可能遇到了 CORS localhost 错误。见this SO question

【讨论】:

  • 那么 GET 和 PUT 请求可以正常工作。我正在解决 CORS 问题,因为 OPTIONS 调用成功并允许 localhost:3000 - 我认为问题在于有效负载是一个对象 - stackoverflow.com/questions/6253256/…
  • 问题在于你可以使用这个方法的对象 JSON.stringfy({hello:'world}')
猜你喜欢
  • 2015-11-27
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2017-01-28
  • 2017-08-23
  • 2016-11-04
相关资源
最近更新 更多