如何检查域是否启用了CORS

时间:2017-07-19 10:02:21

标签: cors

我尝试访问此API click here for more info

POST https://api.line.me/v2/oauth/accessToken

但总是收到错误:

XMLHttpRequest cannot load https://api.line.me/v2/oauth/accessToken.
No 'Access-Control-Allow-Origin' header is present on the requested resource

现在我想确保域名(以及其他例子:facebook,twitter等...)启用CORS,我该怎么做?

1 个答案:

答案 0 :(得分:9)

CORS协议的核心部分是浏览器在处理从前端JavaScript代码发起的跨源请求时发送的Origin请求标头。因此,如果您要从非浏览器客户端/工具模拟基于浏览器的请求,则需要发送Origin标题:

curl -i -H 'Origin: http://sample.com' \
  'https://access.line.me/dialog/oauth/weblogin?response_type=code&client_id=12345&redirect_uri=https%3A%2F%2Fsample.com%2Fauth&state=123abc'

要检查响应,您还需要告诉客户端/工具向您显示响应标头。在上面带有curl的示例中,这就是-i选项的作用。

最后,要确定发送响应的服务器是否在响应中启用了CORS,您需要在那里查找Access-Control-Allow-Origin响应头。

https://access.line.me API的特定情况下,您永远不会在响应中找到响应标头Access-Control-Allow-Origin - 这对于“Web登录流程”的文档而言并不令人惊讶{{3 }}:

  

Web应用程序的LINE登录过程(Web登录)基于OAuth 2.0授权代码授予流程。您的应用程序必须能够在服务器端发出请求并从LINE平台接收数据。

也就是说,文档特别提到需要从“服务器端”发出请求,而这些文档中没有其他任何地方提到支持从运行浏览器的前端JavaScript代码发出的请求,也没有任何代码示例如何使用JavaScript发出请求。

通常,如果特定服务/ API启用了CORS并提供了有关如何向该服务/ API发出请求的文档,那么这些文档将提供有关如何从前端JavaScript执行此操作的示例/详细信息。

换句话说,如果特定服务/ API的文档没有提供如何从浏览器中运行的前端JavaScript向它发出请求的示例/详细信息,则它可能不支持CORS。