如何检查域是否启用了CORS

Kai*_*Kai 4 cors

我尝试访问此API,点击此处获取更多信息

POST https://api.line.me/v2/oauth/accessToken
Run Code Online (Sandbox Code Playgroud)

但总是得到错误:

XMLHttpRequest cannot load https://api.line.me/v2/oauth/accessToken.
No 'Access-Control-Allow-Origin' header is present on the requested resource
Run Code Online (Sandbox Code Playgroud)

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

sid*_*ker 9

CORS协议的核心部分是Origin浏览器在处理从前端JavaScript代码发起的跨源请求时发送的请求标头.因此,如果您要从非浏览器客户端/工具模拟基于浏览器的请求,则需要发送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'
Run Code Online (Sandbox Code Playgroud)

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

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

https://access.line.meAPI 的特定情况下,您永远不会在响应Access-Control-Allow-Origin中找到响应头- 这对于"Web登录流程"的文档来说并不令人惊讶https://developers.line.me/web-api/integrating- web-login-v2#steps_web_login:

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

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

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

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